我有一个带有 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);
});
}
任何帮助将不胜感激
谢谢
最佳答案
为了使单击事件与行关联,该行需要唯一的 ID。如果您的数据未返回每行的 ID,则点击事件将不知道如何区分行,并将返回最新记录,在本例中是表中的最后一条记录。
向数据中的每条记录添加一个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"},
]});
关于javascript - dgrid onDemandGrid 行单击始终获取网格中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26283286/