我有一个带onDemandGrid的自定义小部件。我进行数据库调用,数据在回调函数中返回到网格。在回调函数中,我设置了一行onclick事件,但问题是无论我点击哪一行,我总是从最后一行获取数据。有谁知道我如何解决这个问题来从被点击的行中获取数据?
这是调用数据库并设置回调函数的postCreate函数:
...
postCreate: function () {
MarkTicketDB.TicketUnMarkedGet(this.dataServiceUrl,
lang.hitch(this, this.TicketUnMarkedSet)); //this works ok
}
以下是设置onclick事件的回调函数:
TicketUnMarkedSet: function (GridData) {
...
grid.on(".dgrid-row:click", function (evt) {
var row = grid.row(evt);
ID = row.data.ID; //this is always the last record in the grid
alert(ID);
});
}
非常感谢任何帮助
由于
答案 0 :(得分:1)
为了使click事件与行相关联,该行需要唯一的ID。如果您的数据没有返回每行的ID,那么click事件将不知道如何区分行并返回最近的记录,在这种情况下是表中的最后一条记录。
将 id 属性添加到数据中的每条记录,这将解决问题
这是一个证明这一点的jsfiddle:http://jsfiddle.net/kagant15/o8mq3ks1/
var storeWithID = new Memory({ data: [
{"id" : 1, "Name": "John", "Artist": "Rock", "Album": "Roll", "Genre":"Alternative", "Year": "1995"}
]});
var storeWithNOid = new Memory({ data: [
{"Name": "John", "Artist": "Rock", "Album": "Roll", "Genre":"Alternative", "Year": "1995"},
]});