更新
我在使用自定义格式化程序指向数据时遇到问题。
我正在使用jqgrid的自定义格式化程序。
function myformatter ( cellvalue, options, rowObject )
{
....
现在,我的自定义格式化程序似乎总是指向网格的最后一行。实际上,例如,如果得到
rowObject[0]
,则具有网格的[第0列,最后一行]的值。为什么?网格的数据已正确编译,我已经检查了Json对象的内容。
这是我的自定义格式化程序:
......
{ name: 'act', index: 'Detail', width: 50, sortable: false, search: false,
formatter: function (cellvalue, options, rowObject) {
i = options.rowId;
var tst = '<a class="nau" name="nau" onClick="alert(i);return false;" href="#"></a>';
var det = '<a class="det" name="det" onClick="alert(this.name);return false;" href="#"></a>';
return tst + det;
}
}
....
更新资料
我注意到,如果我直接返回想要的字符串,格式化程序就可以正常工作(例如
return rowObject[0]
可以正常工作),而使用变量时却遇到问题。而且,如果我尝试执行onclick=alert(rowObject[0])
,则会出现异常,提示rowObject
不存在。我认为这是问题所在:如果我设置t = rowObject[0]
,那么格式化程序将t
用作静态变量,而不是为每一行更新它。如果我设置i = options.rowId
,而i
保持静态的话,原因...为什么?我该做什么? 最佳答案
我成功地使它运转起来...我必须说,我感到有些尴尬...这是一个愚蠢的错误。无论如何,我希望我们仍然可以帮助一些像我这样没有经验的人。我没有将变量放在引号之外:
......
{ name: 'act', index: 'Detail', width: 50, sortable: false, search: false,
formatter: function (cellvalue, options, rowObject) {
i = options.rowId;
var tst = '<a class="nau" name="nau" onClick="alert('+i+');return false;" href="#"></a>';
var det = '<a class="det" name="det" onClick="alert(this.name);return false;" href="#"></a>';
return tst + det;
}
}
....
我引用@Oleg的宝贵帮助:“
onclick
中的代码将单独执行,因此您必须使用变量的值而不是名称。例如,由于全局数组rowObject不存在,'onclick="alert(rowObject[0]);return false;"'
会产生错误。您必须更改代码以使用'onclick="alert(' + rowObject[0] + ');return false;"'
,它将在代码中放置rowObject[0]
的值。”关于javascript - jqgrid自定义格式化程序:自定义格式化程序始终返回网格的最后一行。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9456029/