jqgrid setColProp无效

时间:2012-04-09 03:40:11

标签: javascript jquery jqgrid

我正在使用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,甚至重新加载表)它什么都不做。

有什么我做错了吗?

修改: 这是对我正在尝试做的更好的解释。

我有一个标识为#profile_table的jqGrid表。

这是jqGrid代码中colModel的一部分:

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

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

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的值时重新加载网格,但表格没有更新。

1 个答案:

答案 0 :(得分:4)

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

此外,根据您在评论中写的信息,我认为您最好使用dataUrl代替editoptionsvalue。因此,jqGrid可以在创建编辑表单期间直接从服务器加载值列表。有时使用buildSelect很有用。它可以帮助您以服务器的形式提供数据,例如JSON格式,并根据<select><option value="...">...</option>...</select>内的服务器数据构建buildSelect HTML片段。此外,可能需要设置ajaxSelectOptions: { cache: false } jqGrid选项(请参阅herehere)或强制重新验证dataUrl上有关HTTP的先前服务器响应标题"Cache-Control: private, max-age=0"(请参阅herehere