【发布时间】:2012-04-21 13:21:48
【问题描述】:
我正在使用 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 为 #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 的值时重新加载网格,但表格并未更新。
【问题讨论】:
-
更详细地描述问题很重要。
editoptions.value将如何使用?例如,如果您在 editing mode 中有一些行,则选择不会自动更新,但将开始编辑的下一行将使用新设置。如果您将formatter: 'select'与editoptions.value一起使用,则必须重新加载 grig 以应用网格体中的更改。您能否提供更完整的代码示例? -
我添加了更多代码并更好地解释了我正在尝试做的事情,希望您现在能理解我的问题,谢谢
-
抱歉,更新的部分没有清除任何内容。您写道“我无法让实际的选择框更新为新值”。什么是“实际选择框”。 仅当编辑某个单元格或行时,选择才存在(我仍然不知道您使用哪种编辑模式)。为什么在
setColProp之后重新加载网格?你现在有一些编辑模式吗?如果答案是“无行”,则您不需要进行任何重新加载。为什么你把setColProp放在loadComplete里面?我不知道谁更改了contract_list,何时更改以及如何更改。您是否在某些事件处理程序中执行此操作? -
我使用 jqgrid 中的默认编辑表单,只要有人点击“编辑”或“添加”按钮,就会弹出该表单。每当通过从 mysql 数据库中检索值加载页面时,
contract_list中的值就会被填充。该网站的用户可以通过网页的不同部分更改 mysql 数据库中的值,如果他们更改了值,则contract_list将使用新值更新,并且编辑表单内的select框需要用新值更新。我尝试使用setColProp更新它,但无论何时调用它都没有任何反应。 -
现在我想我理解了你的问题并写下了我的答案。
标签: javascript jquery jqgrid