1

如何在Itemselector中禁用项目(见附件) ?我想在将项目移动到目标字段时禁用源字段中的某些项目。你能帮我解决这个问题吗? 附件 - 图片

我搜索了很多并应用了所有可能的东西。我发现没有办法。

由于默认情况下没有禁用选项(据我所知),我正在删除列表中的项目并在需要时再次添加。在这里我有一个疑问。用户可以从左边拖到右边,也可以从右边拖到左边。怎么知道他从哪里拖?是否有任何方法或功能来确定源位置?

4

1 回答 1

0

不幸的是,这需要相当多的手动工作,因为 ExtJS 不支持开箱即用地禁用网格、组合框等中的记录。

我在这里描述了如何创建一个带有禁用记录的组合框。由于组合框和 itemselector 都依赖于boundlist它们的底层,这很方便。

正如您在 的源代码中发现的那样ItemSelector,它有两个属性,fromFieldtoField,其中包含两个multiselect组件。您可以将事件附加到这些列表或它们各自的boundlist.

一个快速的小提琴,它显示了如何使禁用的元素变灰以及如何防止禁用元素的拖放:https ://fiddle.sencha.com/#view/editor&fiddle/2382

缺少的是按钮在添加之前不会检查记录是否被禁用,您必须为此覆盖 ItemSelector 的onAddBtnClick方法。如果您从 ItemSelector 派生一个新的自定义组件,这比在我的 Quick and Dirty fiddle 中要容易得多。所以我强烈建议你定义自己的从 ItemSelector 派生的自定义组件。

于 2017-07-13T10:29:16.763 回答