如何在Itemselector中禁用项目(请参阅附件)?我想在将项目移动到目标字段时禁用源字段中的某些项目。你能帮帮我吗? ATTACHMENT - Image
我搜索了很多并尽可能地应用了一切。我发现没办法。
由于默认情况下没有禁用选项(据我所知),我将删除列表中的项目并在需要时再次添加。在这里,我有一个疑问。用户可以从左侧拖动并将其放在右侧,也可以从右侧拖动并将其拖放到左侧。如何知道他在哪里拖?是否有任何方法或功能来确定源位置?
答案 0 :(得分:0)
遗憾的是,这需要一些手动工作,因为ExtJS不支持禁用网格,组合框等中的记录。
我已经描述了here如何创建具有禁用记录的组合框。由于组合框和项目选择器都依赖于引擎盖下的boundlist
,因此非常方便。
正如您在ItemSelector
的源代码中所看到的,它有两个属性fromField
和toField
,其中包含两个multiselect
组件。您可以将事件附加到这些列表或其各自的boundlist
。
一个快速小提琴,展示了如何使已禁用的元素变灰并如何防止禁用元素的拖放:https://fiddle.sencha.com/#view/editor&fiddle/2382
缺少的是该按钮在添加之前不检查记录是否被禁用,您必须覆盖ItemSelector的onAddBtnClick
方法。如果从ItemSelector派生一个新的自定义组件,这比在我的Quick and Dirty小提琴中更容易。因此,我强烈建议您定义从ItemSelector派生的自定义组件。