在 Dojo 数据网格中添加一行

Posted

技术标签:

【中文标题】在 Dojo 数据网格中添加一行【英文标题】:Add a row in Dojo datagrid 【发布时间】:2011-04-02 13:57:55 【问题描述】:

努力寻找一些易于理解的代码。

如何在 Dojo 数据网格(版本 1.4.2)中添加一行并清除所有行。假设数据是包含 customerID 和地址的 2 列。

我正在使用

dojo.data.ItemFileWriteStore

将值存储在其中 - 但又不太确定应该如何使用它。

没那么难。

干杯。

【问题讨论】:

【参考方案1】:

以上答案是正确的,但您还需要在写入存储上调用save() 以“提交”更改。保存时,使用商店的小部件(例如数据网格)将自行刷新。

另外,newItem() 返回您刚刚创建的新项目,因此如果您不想将对象传递给 newItem,只需修改其返回值,然后 save() 存储。

伪代码:

var i = store.newItem();

store.setValue(i,"newattribute1","new value");
store.setValue(i,"newattribute2","new value 2");

store.save();

Here is the relevant docs for ItemFileWriteStore 告诉如何使用newItem()setValue()save()

您应该使用setStore(new ItemFileWriteStore()) 而不是deleteItem,但我怀疑这样做时会出现内存泄漏,请小心。这使得一个新的空白存储与网格一起使用。

【讨论】:

【参考方案2】:

我已经完成了一个关于这个的例子......代码在这里

//首先我们创建添加/删除行的按钮 var addBtn = new dijit.form.Button( id: "addBtn", 类型:“提交”, 标签:“添加行” , "divAddBtn");//加载按钮的div

var delBtn = new dijit.form.Button( id:“delBtn”, 类型:“提交”, 标签:“删除选定的行” , "divDelBtn");

//连接到此按钮的onClick事件,以添加/删除行的相应操作。 //其中 grid 是要处理的网格变量的名称。 dojo.connect(addBtn,“onClick”,函数(事件) // 设置新项目的属性: var myNewItem = id:grid.rowCount+1, 类型:“国家”, name: "填写这个国家名称" ; // 将新项目插入商店: //(我们在这个例子中使用上面例子中的store3) store.newItem(myNewItem); );

dojo.connect(delBtn, "onClick", function(event) // Get all selected items from the Grid: var items = grid.selection.getSelected(); if (items.length) // Iterate through the list of selected items. // The current item is available in the variable // "selectedItem" within the following function: dojo.forEach(items, function(selectedItem) if (selectedItem !== null) // Delete the item from the data store: store.deleteItem(selectedItem); // end if ); // end forEach // end if );

【讨论】:

【参考方案3】:

您可以使用grid.store 从网格中获取数据存储引用,然后您可以使用store.newItem() 在存储中创建一个新项目。此新项目将作为新行添加到网格中。例如,store.newItem(customerID : 1, address : "Somewhere")

要清除所有行,您可以循环数据存储中的所有项目并使用deleteItem() 删除所有项目,或使用数据网格中的内部函数_clearData() 删除所有行,或使用setStore() 为网格设置一个新的空存储。我更喜欢使用空存储来重置网格。

【讨论】:

以上是关于在 Dojo 数据网格中添加一行的主要内容,如果未能解决你的问题,请参考以下文章

增强网格中的行选择

如何处理 dojo 数据网格单元更新,以便我可以将它们自动发布回服务器?

如何将 Dojo Data 网格单元格值重定向到另一个页面?

自定义小部件中的 dojo 数据网格未呈现

在 dojo 数据网格中实现超链接

使用组合框值更改时的新存储值更新/刷新 dojo 数据网格