2

我正在使用 setColProp 将值动态加载到select编辑类型中。

每当我调用时,我都会成功加载值:

loadComplete: function() {
                $("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });
            },

然而,它只在这里有效,而且只有一次。如果我更改值contract_list并尝试通过调用更新 jqgrid

$("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });

再次从任何地方(从按钮单击,从 afterSubmit,甚至重新加载表)它什么都不做。

有什么我做错了吗?

编辑:这是对我正在尝试做的事情的更好解释。

我有一个 id 的 jqGrid 表#profile_table

这是colModeljqGrid 代码中的一部分:

colModel:[
                {name:'contract_num',index:'contract_num', editable: true, hidden: false, width:30, edittype: "select", editrules: {required: true}},   
]

最初,contract_num编辑/添加表单中的编辑字段在其select框中没有值。我从一个名为的 javascript 变量加载初始值,该变量contract_list是在创建表之前创建的。我最初使用以下方法加载这些值:

loadComplete: function() {
                $("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });
            },

contract_list这可以正常工作,但是每当用户更改显示此表的页面上的其他内容时,值可能会发生变化。所以我试图动态更新该表的编辑/添加表单内select的字段框内的选项。contract_num我成功更改了 内部的值contract_list,但是我无法让实际select框更新为新值。

我正在尝试通过调用来更新它:

$("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });

然后在有人更改 的值时重新加载网格contract_list,但是表没有被更新。

4

1 回答 1

4

如果您使用recreateForm: true表单编辑选项,我认为您的主要问题将得到解决(请参见此处的用法示例)。我建议您在调用之前将设置设置为默认值navGrid(请参见此处的相应代码)。

此外,根据您在评论中写的信息,我认为您应该更好地使用dataUrlvalue不是editoptions。因此 jqGrid 可以在创建编辑表单期间直接从服务器加载值列表。有时使用buildSelect是有用的。它可以帮助您以例如 JSON 格式提供来自服务器的数据,并<select><option value="...">...</option>...</select>根据buildSelect. 此外,可能需要设置ajaxSelectOptions: { cache: false }jqGrid 选项(请参阅此处此处)或强制重新验证有关dataUrlHTTP 标头的先前服务器响应"Cache-Control: private, max-age=0"(请参阅此处此处

于 2012-04-10T22:59:36.240 回答