将新项目添加到商店后 Dojo Datagrid 排序

Posted

技术标签:

【中文标题】将新项目添加到商店后 Dojo Datagrid 排序【英文标题】:Dojo Datagrid Sort after adding New Item to Store 【发布时间】:2011-07-29 07:18:10 【问题描述】:

在支持数据网格的存储上调用 newItem() 然后 save() 后,DataGrid 没有自行解决问题。

<div dojoType="dojo.data.ItemFileWriteStore" url="/MultiRaterManagerAjax" id="mrWriteStore" jsId="mrWriteStore"</div>     

<table dojoType="dojox.grid.DataGrid" region="left" query=" hasSub: false "
        clientSort="true" selectionMode="single"   jsId="ldrSubGrid" sortInfo="1"
        errorMessage="Loading..." store="mrWriteStore">
          <thead>
              <tr>
                  <th  field="_item" formatter="formatSubs">Subs</th>     
              </tr>

          </thead>
</table>

事件处理程序调用以下 javascript

item = mrWriteStore.newItem();
//set the necessary attributes on item
mrWriteStore.save(onComplete:afterStoreUpdate, onError: saveFailed);

一个新项目被添加到商店,DataGrid 更新显示新项目。但新项目位于列表的底部。它似乎无法识别数据网格的排序顺序。

我在想我需要在数据网格上连接(或订阅)一个事件,告诉我它已经更新了数据。然后在触发此事件时调用排序/过滤函数。但是要连接/订阅什么?

【问题讨论】:

【参考方案1】:

前几天我正在为此苦苦挣扎。我认为您需要从 onComplete 函数内部调用 datagrid 的 sort() 方法,您已将其命名为 afterStoreUpdate

dijit.byId('ldrSubGrid').sort();

【讨论】:

这适用于排序。谢谢。我不认为商店中的事件会是我想要在网格上排序的。在相同情况下仍然存在过滤问题,但我还没有足够的知识来提出问题。 onComplete: ldrSubGrid.filter( hasSub: false,,null);没有做任何事情,但是在 Firebug 中正确过滤网格之后运行相同的代码。 JavaScript 有时很不稳定。 它是包裹在这样的函数中的吗? onComplete: function() ldrSubGrid.filter( hasSub: false,,null); 只是检查以确保

以上是关于将新项目添加到商店后 Dojo Datagrid 排序的主要内容,如果未能解决你的问题,请参考以下文章

使用“之前”选项将项目添加到道场商店

没有为 dojo 的 DataGrid 触发事件

如何将 dojo (dojo 0.x) FilteringTable 迁移到 (dojo 1.6) 中的 DataGrid?

DOJO:DataGrid 增量加载不起作用

mysql数据导入Dojo datagrid表

Dojo - Dijit.Tree - 更新树