【问题标题】:Add row to start of Dgrid instead of end using Rest call使用 Rest 调用将行添加到 Dgrid 的开头而不是结尾
【发布时间】:2015-01-15 05:25:53
【问题描述】:

如您所知,dgrid 0.4 现在使用 dstore 包而不是 dojo 的 store。使用 dstore 中的 Rest.js,我只想使用 rest 调用向 dgrid 添加一个新行。这工作正常。但是,它将行添加到 dgrid 的末尾(作为最后一行)。我需要在开头添加行(使新添加的行成为 dgrid 的第一行)。在 Rest.js 中,有一个名为 defaultNewToStart 的变量,我认为它可以解决问题,但即使设置为 true,dgrid 仍会在末尾添加行。关于如何在 dstore 中获取 Rest.js 以在 dgrid 开头添加一行的任何建议。

【问题讨论】:

  • 您能否展示您的代码,尤其是您是如何创建商店和网格的,以便我们看看是否存在一个经常被忽视的错误?
  • 是的,事实证明我犯了一个基本错误,我敢打赌有人会发现。我再也不会在没有相关代码的情况下发布另一个问题。

标签: rest dojo dgrid


【解决方案1】:

我知道我做错了什么。在 dgrid/OnDemandGrid 中,我设置了属性“sort”,这导致 Trackable.js 中的 queryExecutor 将新添加的行放在末尾而不是开头。所以我所要做的就是删除 sort 属性,现在它可以正常工作了。

【讨论】:

  • 在你的辩护中,这并不像我想象的那么普遍,并且是一个很好的注意事项以供将来参考,因此感谢您报告结果。
【解决方案2】:

dstore/Memory 的添加功能支持PutDirectives 作为第二个参数,而不是您要插入的项目。 PutDirectives 有一个属性 beforeId 可用于在存储中的任何现有记录之前插入项目。

在开头添加一个空行:

var beforeID = null;
store.fetch().forEach(lang.hitch(this, function(data) { beforeId = data.id;}));
store.add({id: ''}, {beforeId: beforeID});

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    相关资源
    最近更新 更多