sencha touch 将已删除的列表行添加到列表的不同索引

Posted

技术标签:

【中文标题】sencha touch 将已删除的列表行添加到列表的不同索引【英文标题】:sencha touch add row of list that has been removed to different index of list 【发布时间】:2017-10-02 03:14:25 【问题描述】:

我真的需要一些想法。基本上,我正在通过单击按钮对列表进行排序。如果我单击向上按钮,列表将上升,所选列表的索引将减少一。当我单击向下按钮时,列表将下降,所选列表的索引将增加一。我使用该方法暂时删除选定的列表,然后根据用户将列表插入到不同的索引中。我已经解决了删除部分,但我不知道插入部分。请帮忙。

这些是删除选定列表的代码。

var removeSelectedItems = Ext.getCmp('SearchRefSlipMain_List').getSelection()[0]; Ext.getCmp('SearchRefSlipMain_List').getStore().remove(removeSelectedItems);

剩下的只是根据用户将我已删除的列表行插入另一行(不同的索引)。

【问题讨论】:

【参考方案1】:

按钮:

        
          xtype: 'button',
          iconCls: 'arrow_down',
          handler: function () 
               RowDown();

             
         

这是函数:

function RowDown()

var direction = 1   // 1 or -1    
var record = Ext.getCmp('Settings_SetTreatmentList_TreatmentDetail_List').getSelection()[0];   //list id


if (!record) 
    return;

var index = Ext.getCmp('Settings_SetTreatmentList_TreatmentDetail_List').getStore().indexOf(record);


if (direction < 0) 
    index--;
    if (index < 0) 
        return;
    
 else 
    index++;
    if (index >= Ext.getCmp('Settings_SetTreatmentList_TreatmentDetail_List').getStore().getCount()) 

        return;
    


Ext.getCmp('Settings_SetTreatmentList_TreatmentDetail_List').getStore().remove(record);
Ext.getCmp('Settings_SetTreatmentList_TreatmentDetail_List').getStore().insert(index, record);

 

***如果将选中的列表向上移动,改变方向 = -1 * https://www.sencha.com/forum/showthread.php?48472-how-to-move-the-grid-s-row-up-and-down(我从这里得到了解决方案,只是根据 Sencha Touch 稍微改变一下)

【讨论】:

我更新了我的答案,向你展示如何加快你的结果。【参考方案2】:

通常您不会更改列表,而是更改填充列表的商店。 如果这没有帮助,你可以在这里设置一个小提琴:

https://fiddle.sencha.com/#view/editor

(只需保存它并将链接添加到您的问题中的小提琴)

我更改了您的答案,结果应该相同,但速度更快:

function RowDown() 
    var direction = 1,   // 1 or -1
        treatmentDetail = Ext.getCmp('Settings_SetTreatmentList_TreatmentDetail_List'),
     // or use reference
     // treatmentDetail = this.lookup('Settings_SetTreatmentList_TreatmentDetail_List'),
        record = treatmentDetail.getSelection()[0],   //list id
        store, index;

    if (!record) 
        return;
    

    store = treatmentDetail.getStore(),
    index = store.indexOf(record);


    index = index + (1 * direction);

    if (index >= store.getCount() || index < 0) 
        return
    

    store.remove(record);
    store.insert(index, record);

【讨论】:

将您的解决方案留在这里可能是个好习惯。如果其他人发现您的问题有帮助,那么应该有相应的解决方案。 这里我附上我的答案=) Ext.getCmp('SearchRefSlipMain_List') 是最昂贵的调用。使用引用并使用变量一次性设置组件。否则您的应用可能会变慢。

以上是关于sencha touch 将已删除的列表行添加到列表的不同索引的主要内容,如果未能解决你的问题,请参考以下文章

SENCHA:如何通过单击 SENCHA touch 中的添加/删除按钮动态添加/删除文本字段

Sencha Touch:尝试将列表添加到面板

sencha touch load store 手动

Sencha Touch Calendar,添加更多停靠项目时列表消失

如何在 Sencha Touch 2 的列表后添加项目?

sencha touch2 中的下拉列表