我正在创建一个带下拉列的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事件中以某种方式获取选择控件,并手动输入其值,而不是使用setColProp调用?如果可以的话,请给我一个这样做的示例吗?
另外一件事——如果下拉列表为空,且用户没有取消单元格编辑,则网格脚本会抛出错误。如果使用客户端数组编辑,这可能会有所不同。