jqGrid在编辑模式下通过单元格编辑在控件上注册事件

时间:2014-07-17 10:45:16

标签: jquery jqgrid

在我们的项目中,我们在编辑模式中选择控件,以应用更改事件:

var rowSelector = '#' + rowid + '_';
var controlSelector = rowSelector + columnName
var $(controlSelector).change(function () {
          //code here
    } 

现在的问题是,对于一些较大的重构(单元格编辑,使用格式化程序等),内部控件的ID不是格式为rowid_columnName,而是使用序列号而不是rowid。因此,例如,select元素包含id="1_ColumnName"而不是"90433_ColumnName"(90433是tr的id) 这实际上提出了这些问题:

  1. 如何正确选择内部控制(通过jqGrid API)?
  2. 使用序号而不是rowid制作jqGrid可能是什么原因?
  3. 这甚至是为下拉列表注册更改事件的正确方法吗?应该使用cellEdit:true
  4. 完成哪些事件

1 个答案:

答案 0 :(得分:1)

如果以错误的方式填充网格,通常会出现问题。重要的是要了解jqGrid 总是id属性分配给网格的每一行(到<tr>)。因此,您必须通知jqGrid它应该在输入数据中获取值。如果您使用具有命名属性的项目数组作为jqGrid的输入,并且id具有例如_myId值,那么您应该使用jsonReader: {id: "_myId", repeatitems: false}。或者,您可以在另一个案例中使用colModel中的id值列。在这种情况下,您可以将key: true属性添加到colModel中列的定义中。如果您不需要将jsonReaderid属性一起使用。

顺便说一下,我不理解你所包含的change代码。您通常不需要使用此类代码。 editoptionsdataEvents将是更好的选择。