我正在使用 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} });
再次从任何地方(通过单击按钮,通过提交后,甚至重新加载表格)它什么也不做。
我是不是做错了什么?
编辑: 这是我正在尝试做的事情的更好解释。
我有一个 ID 为 #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
的值就可能会更改。因此,我尝试动态更新此表的编辑/添加表单内的 contract_num
字段的 select
框中的选项。我成功更改了 contract_list
内部的值,但是我无法将实际的 select
框更新为新值。
我正在尝试通过调用来更新它:
$("#profile_table").setColProp('contract_num', { editoptions: { value: contract_list} });
然后,只要有人更改 contract_list
的值,就会重新加载网格,但表不会更新。
最佳答案
我认为如果您使用recreateForm: true,您的主要问题将会得到解决表单编辑选项(参见 here 使用示例)。我建议您在调用navGrid
之前将该设置设置为默认设置(参见here相应的代码)。
此外,根据您在评论中写的信息,我认为您应该更好地使用 dataUrl
而不是value
editoptions的。因此,jqGrid 可以在创建编辑表单期间直接从服务器加载值列表。有时使用buildSelect
很有用。它可以帮助您以 JSON 格式等形式从服务器提供数据并构建 <select><option value="...">...</option>...</select>
基于 buildSelect
内的服务器数据的 HTML 片段。此外,可能需要设置 ajaxSelectOptions: { cache: false }
jqGrid 选项(请参阅 here 或 here )或强制重新验证 dataUrl
上的先前服务器响应。关于 HTTP header "Cache-Control: private, max-age=0"
(参见here和here)
关于javascript - jqgrid setColProp 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10068647/