修改前一个下拉框的数据,使后一个下拉框中的内容发生改变,就是级联下拉。
可以在前一个下拉框的onUpdateValue事件中给后一个下拉框的option关联的data设置filter,然后在后一个下拉框的onShowOption事件中调用data的刷新就可以使内容发生变化
当然在修改了前一个下拉的选择数据后,后一个下拉框的数据也要清空,同样在前一个下拉框的onUpdateValue事件操作,如下:
第一个下拉框的定义
<div class="x-gridSelect" component="$UI/system/components/justep/gridSelect/gridSelect" xid="gridSelect6" bind-ref="$model.bizData2.ref("fDQID")" bind-labelRef="$model.bizData2.ref("fDQ")" onUpdateValue="gridSelect6UpdateValue"> <option xid="option6" data="RegionData" value="DEMO_Region" label="fName"/> </div>
Model.prototype.gridSelect6UpdateValue = function(event) { var data = this.comp("bizData2"); var RegionID = data.getValue("fDQID"); var ProvinceData = this.comp("ProvinceData") ProvinceData.setFilter("filter1", "DEMO_Province.fRegionID=" + RegionID); data.setValue("fSID", ""); data.setValue("fS", ""); this.isReload = true; };
第二个下拉框的定义
<div class="x-gridSelect" component="$UI/system/components/justep/gridSelect/gridSelect" xid="gridSelect5" bind-ref="$model.bizData2.ref("fSID")" bind-labelRef="$model.bizData2.ref("fS")" onShowOption="gridSelect5ShowOption"> <option xid="option5" data="ProvinceData" value="DEMO_Province" label="fName" autoLoad="false"/> </div>
Model.prototype.gridSelect5ShowOption = function(event) { if (this.isReload) { this.comp('ProvinceData').refreshData(); this.isReload = false; } };
js中用的是this.isReload是在model中定义的实例变量
var Model = function() { this.callParent(); var isReload = false; };
评一波