我正在创建一个带有下拉列的 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 行单击中。等等。所以总是一键落后。
有没有另一种方法来实现我所需要的?Bacially 显示的下拉选项总是在变化,我需要在用户输入单元格进行编辑时加载它们。也许我可以以某种方式获得 beforeEditCell 事件中的选择控件并手动输入其值而不是使用 setColProp 调用?如果是这样,我可以举个例子吗?
另一件事 - 如果下拉列表为空并且用户没有取消单元格编辑,则网格脚本会引发错误。如果这有所作为,我正在使用 clientarray 编辑。