我正在使用下拉列创建一个jqgrid,我正在使用单元格编辑。我需要下拉列的选项来动态更改,我尝试通过将列设置为:
来实现此功能{ name: "AccountLookup", index: "AccountLookup", width: 90, editable: true, resizable: true, edittype: "select", formatter: "select" },
然后在beforeCellEdit事件中我有:
beforeEditCell: function(id, name, val, iRow, iCol) {
if(name=='AccountLookup') {
var listdata = GetLookupValues(id, name);
if (listdata == null) listdata = "1:1";
jQuery("#grid").setColProp(name, { editoptions: { value: listdata.toString()} })
}
},
GetLookupValues只返回格式为“1:One; 2:Two”等字符串。 这工作正常然而选项填充一次点击 - 即我点击第1行中的AccountID,下拉列表为空,但是当我点击第3行中的AccountID时,我在行1中单击的选项显示在第3行单击。等等。所以总是咔嚓一声。
还有另一种方法可以实现我的需求吗?显然,显示的下拉选项总是在变化,我需要在用户进入单元格进行编辑时加载它们。 也许我可以以某种方式获取beforeEditCell事件中的select控件并手动输入其值而不是使用setColProp调用?如果是这样,我可以得到一个这样做的例子吗?
另一件事 - 如果下拉列表为空并且用户未取消单元格编辑,则网格脚本会引发错误。我正在使用clientarray编辑,如果这会产生影响。
答案 0 :(得分:3)
您可以使用dataInit选项,如下所示:
{ name: "AccountLookup", index: "AccountLookup", width: 90,
editable: true, resizable: true, edittype: "select", formatter: "select",
editoptions: { dataInit: function( elem )
{
$(elem).empty()
.append("<option value='1'>Apples</option>")
.append("<option value='2'>Oranges</option>");
} } }
只需更换静态苹果&amp;使用GetLookupValues()函数的Oranges选项。