如何禁用Itemselector中的项目(请参阅附件)?我想在将项目移动到目标字段时禁用源字段中的某些项目。你能帮我吗?
ATTACHMENT - Image
我进行了很多搜索并竭尽所能。我发现没有办法。
由于没有默认禁用的选项(据我所知),我将删除列表中的项目,并在需要时再次添加。在这里我有一个疑问。用户可以从左侧拖动并将其拖放到右侧,也可以从右侧拖动并将其拖放到左侧。如何知道他从哪里拖动?是否有任何方法或功能可以确定源位置?
最佳答案
不幸的是,这需要大量的手工工作,因为ExtJS不支持立即禁用网格,组合框等中的记录。
我已经描述了here如何创建具有禁用记录的组合框。由于combobox和itemselector都依赖于boundlist
,因此非常方便。
正如您在ItemSelector
的源代码中可能会发现的那样,它具有两个属性fromField
和toField
,其中包含两个multiselect
组件。您可以将事件附加到这些列表或它们各自的boundlist
。
一个快速的小提琴,显示了如何将禁用的元素显示为灰色以及如何防止禁用元素的拖放:https://fiddle.sencha.com/#view/editor&fiddle/2382
缺少的是该按钮在添加之前不检查记录是否已禁用,因此您必须重写ItemSelector的onAddBtnClick
方法。如果从ItemSelector派生一个新的自定义组件,这比在我的快速和肮脏小提琴中要容易得多。因此,我强烈建议您定义从ItemSelector派生的自定义组件。
关于javascript - 拖放Itemselector extJS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45076123/