【问题标题】:ExtJS: Ext.grid.Panel: how to keep sort order after store.sync()?ExtJS:Ext.grid.Panel:如何在 store.sync() 之后保持排序顺序?
【发布时间】:2011-11-19 13:23:41
【问题描述】:

我有一个很好用的 Ext.grid.Panel,你可以点击列标题来“自动”排序。 商店有“autoSync:true”。 我有一个“新建”按钮,当用户单击它时,它会创建一个空记录没有 id 属性:

onAddClick: function(){
    this.down('#new').setDisabled(true);
    var rec = new GroupeSynergies.data.Partenaire({
        /* Valeurs par défaut des colonnes */
        description: 'Nouveau partenaire'
    });
    this.store.insert(0, rec);
},

我将记录插入 #0 位置,因为我知道它会自动同步(这就是实际发生的情况)。 问题是:如果你点击“id”列,它是按id asc排序的,如果你再次点击,则倒序。

然后单击“新建”按钮,它会创建空的新记录,将其发送到服务器,并获取 id 字段完成的结果记录,更新网格,但是...不要考虑排序:当它同步时,返回的 id 是 very 高并且它保持在顶部,无论排序顺序是什么。我做错了什么?

非常感谢

(PS 我在 stackoverflow 上提问是因为 Sencha 的论坛似乎人满为患)

【问题讨论】:

    标签: extjs datagrid gridpanel


    【解决方案1】:

    这是另一个解决方案:

    Ext.define('My.data.Store', {
        extend: 'Ext.data.Store',
    
        sortOnWrite: false,
    
        resort: function () {
    
            var me = this;
    
            me.doSort(me.generateComparator());
        },
    
        onProxyWrite: function (operation) {
    
            var me = this;
    
            if (me.sortOnWrite && operation.wasSuccessful()) {
    
                me.resort();
            }
        }
    });
    

    【讨论】:

      【解决方案2】:

      在类似的情况下,我找到的解决方案是在 store 的 'write' 事件处理程序中添加一个 store.sort。

      Ext.application({
      
          (...)
      
          launch: function() {
      
              var myStore = this.getStore('myStore');
              myStore.on('write', function(store, operation){ store.sort('id','ASC') }; );
      
          }
      
      });
      

      根据您的需要调整排序参数。 Documentation 用于“排序”方法。

      如果您在商店的代理上设置了writer,排序也会触发一个简单的“更新”。为避免这种情况,您可以测试operation 参数的值。 Documentation 用于“写入”事件。

      我不知道这是不是更好的方法,这是我目前唯一找到的。

      【讨论】:

      • 它似乎还没有实现,但你的回答是一个很好的解决方法。非常感谢!
      猜你喜欢
      • 2023-01-07
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 2015-01-28
      • 1970-01-01
      相关资源
      最近更新 更多