有人能帮助我在DGRID中插入一行吗?我现在做的是克隆一行,使用指令将其添加到集合中,然后尝试将其应用到网格中。下面是我正在使用的代码,但新行最终被添加到底部,而不是被插入。
// Clone a row
theTable = tmxdijit.registry.byId(tableName);
firstRow = theTable.collection.data[theTable.collection.data.length-1];
firstRowDom = theTable.row(firstRow.id);
var cloneRow = json.stringify(firstRow);
cloneRow = json.parse(cloneRow);
// Get the row I want to add before
var theSelected = Object.keys(theTable.selection)[0];
if(theSelected.length > 0) {
var theRowID = theSelected[0];
}
theTable.collection.add(cloneRow, {beforeId: theRowID});
theTable.renderArray([cloneRow]);
2条答案
按热度按时间yeotifhr1#
处理数据插入的一般方法有两种。一种是手动将数据添加到数组,确保其正确排序,然后告诉网格呈现数组。一种更好的方法是使用具有可跟踪存储的OnDemandGrid。
要使dgrid/dstore支持简单的动态行插入,请确保存储是可跟踪的,并且数据项具有某些唯一的id属性:
默认情况下,dstore假设id属性为“id”,但您可以指定其他属性:
如果要对数据进行排序,一个简单的解决方案是在网格上设置排序(网格将使用给定的属性名称按升序对行进行排序):
要添加或删除数据,请使用存储方法
put
和remove
。网格将收到存储更新的通知,并将插入或删除行。
dgrid Using Grids and Stores教程提供了更多信息和示例。
nnvyjq4y2#
与此相反,为什么不直接将数据添加到网格存储中呢?
添加和删除数据
如果要以编程方式添加(删除)数据,则只需从基础数据存储区中添加(删除)数据。由于DataGrid是“DataStoreAware”,因此对存储区所做的更改将自动反映在DataGrid中。
。
。