dgrid onDemandGrid行单击始终获取网格中的最后一行

时间:2014-10-09 16:18:49

标签: javascript dojo dgrid

我有一个带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);

            });
}

非常感谢任何帮助

由于

1 个答案:

答案 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"},
    ]});