我正在使用setColProp将值动态加载到select
编辑类型中。
每当我打电话时,我都会成功加载值:
loadComplete: function() {
$("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });
},
然而它只能在这里工作,而且只能工作一次。如果我更改contract_list
的值并尝试通过调用
$("#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
的值时重新加载网格,但表格没有更新。
答案 0 :(得分:4)
如果您使用表单编辑的recreateForm: true选项,我认为您的主要问题将得到解决(请参阅here使用示例)。我建议您在之前将设置设置为默认 navGrid
(请参阅here相应的代码)。
此外,根据您在评论中写的信息,我认为您最好使用dataUrl
代替editoptions的value
。因此,jqGrid可以在创建编辑表单期间直接从服务器加载值列表。有时使用buildSelect
很有用。它可以帮助您以服务器的形式提供数据,例如JSON格式,并根据<select><option value="...">...</option>...</select>
内的服务器数据构建buildSelect
HTML片段。此外,可能需要设置ajaxSelectOptions: { cache: false }
jqGrid选项(请参阅here或here)或强制重新验证dataUrl
上有关HTTP的先前服务器响应标题"Cache-Control: private, max-age=0"
(请参阅here和here)