效果演示
Grid中有两列,Require列的值是“Y”时,Value列是必填,效果如下图:
实现思路:
Require和Value都是 widgetcolumn类型的列, 每个Cell中都是一个Combobox,以Require列为例,列定义如下:
{
text : 'Require?',
dataIndex : 'require',
xtype : 'widgetcolumn',
widget : {
xtype : 'combobox',
store : [ 'Y', 'N' ],
bind : '{record.require}'
}
}
如果要实现选择某一行Require列的下拉单中的值,找到该行Value列中的Combobox并设置必填,就需要在Require的Combobox的change事件的时候能找到Value列的Combobox。
通过widget中的combobox的change事件可以获取widgetcolumn(getWidgetColumn())和widgetrecord(getWidgetRecord()),但是很难获取Value列的Combobox。
所以, 只能在点击最上方的Save按钮时统一检查。实现逻辑如下:
- 查找所有的Combobox
- 通过getWidgetColumn()和getWidgetRecord()获取列的dataIndex和行的数据 id.
- 判断同一个Record Id的Require和Value的Cell的值,并通过markInvalid()方法设置必填效果/
完整代码示例
https://github.com/osxm/extjs6-app/blob/master/test/gridValid.html