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 中的添加/删除按钮动态添加/删除文本字段