树形数据默认是延迟加载的,即默认只加载根数据,子数据需要展开的父的时候才加载,这样就导致如果选择的有子数据下拉展开的还是数据不会选中
树形grid提供的有行展开(onExpandRow)事件,因此可以在这个事件中控制行选中,具体实现如下:
在gridSelect组件的onShowOption事件中实现监控onExpandRow事件
Model.prototype.orgSelectPC1ShowOption = function(event){ var gridselect = event.source;//获取gridselect组件 var grid = gridselect.grid;//获取gridSelect组件内部的grid var id = this.comp("mainData").getValue("fBMID");//获取当前行已经选择的数据(bind-ref关联的关系值) var column = gridselect.optionCfg.value;//获取option-value设置的关系 var valueSeparator = gridselect.valueSeparator;//获取多选值的分隔符 var data = this.comp("bizData1"); //获取option关联的data grid.on('onExpandRow', function(event) {//使用on方法添加onExpandRow事件 //取消已经选择的 var checkIDs = grid.getCheckeds(); if($.isArray(checkIDs)){ for(i=0;i<checkIDs.length;i++){ grid.setRowChecked(checkIDs[i],false); } } //设置行选中 if(id){ var ids = id.split(valueSeparator); for(var i = 0;i<ids.length;i++){ var rows = data.find([ column ], [ ids[i] ], true); if(rows.length > 0){ grid.setRowChecked(ids[i],true); } } } }); };
评一波