jquery - jqGrid动态选择选项

标签 jquery dynamic jquery-plugins jqgrid

我正在创建一个带有下拉列的 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 调用?如果可以的话,我可以举个例子吗?

另一件事 - 如果下拉列表为空并且用户没有取消单元格编辑,则网格脚本会抛出错误。如果有什么不同的话,我正在使用 clientarray 编辑。

最佳答案

您可以使用 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>");
    } } }

只需用 GetLookupValues() 函数替换静态 Apples & Oranges 选项即可。

关于jquery - jqGrid动态选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291290/

相关文章:

javascript - 在客户端将html表格导出到ppt?

javascript - 通过浏览器设置元素的高度而不切断内容

javascript - 如何找出用户在文本输入中按下了 "enter"?

c# - 在 C# 中的静态类中使用 JsonConvert.DeserializeObject<T> 进行动态转换

c# - 如何在c#中使用动态语法?

jQuery 图像缩放,悬停时显示详细信息

javascript - 如何检查 jQuery 表单循环中的单选按钮和复选框是否被选中?

javascript - 多次使用相同 jQuery 函数的问题

javascript - 为什么我无法更新我的 JavaScript 对象属性值?

c++ - 在qml中动态添加图片对象