Ext中的Grid列表仅仅提供了按Index号进行选中行,并不能按特定的字段名匹配进行行的选中,即没有类似Grid.selectRowByColName的方法提供,因此需要自己进行Index数组的拼装,然后再利用selectRows进行勾选。
提供如下代码案例:
版本一:
- //need select
- resIdS = getResourcesByOrderIdOrPdtId.synExecute({pdt_id:pdtId});
- resIdS = resIdS.dataSetResult[0].data;
- //datasource
- var re = resDataSet.getResultData().dataSetResult[0].data;
- //container
- var arr=new Array();
- //match
- for (var t = 0;t<re.length;t++){
- var pdtResId=re[t]["pdt_resource_id"];
- for(var i= 0;i<resIdS.length;i++){
- if(pdtResId == resIdS[i]["pdt_resource_id"]){
- arr[i] = t;
- }
- }
- }
- //select
- resGrid.selectRows(arr);
版本二:
- /**
- * 1.select directly
- */
- thisComp.store.on('load',function(store,records,options)
- {
- var record = MainWin.pdtInfo.getSelectionData();
- pdtId = record.get("pdt_id");
- resIdS = getResourcesByOrderIdOrPdtId.synExecute(
- {
- pdt_id:pdtId
- }
- );
- resIdS = resIdS.dataSetResult[0].data;
- var arr=new Array();
- for(var i= 0;i<resIdS.length;i++)
- {
- var index = resGrid.store.findExact("pdt_resource_id",resIdS[i]["pdt_resource_id"]);
- if(index >= 0 )
- {
- arr.push(index);
- }
- }
- resGrid.selectRows(arr);
- }
- );
定制版:
根据恒生已封装的代码进行把需要选的维护到在控件中的公共数组,有控件自动进行选中操作,代码如下:
- /**
- * 2.push to common select data
- */
- var pagingBar = thisComp.pageBar;
- pagingBar.on("change",function(bar,data,o)
- {
- var activPage = bar.getPageData().activePage;
- //dataset
- var pageDataSet = resDataSet.getResultData().dataSetResult[0].data;
- //need select
- var rec = MainWin.pdtInfo.getSelectionData();
- pdtId = rec.get("pdt_id");
- needSelectIdS = getResourcesByOrderIdOrPdtId.synExecute(
- {
- pdt_id:pdtId
- }
- );
- needSelectIdS = needSelectIdS.dataSetResult[0].data;
- var grid = bar.grid;
- var allData = grid.getAllData();
- var record = null;
- for(var i=0;i<allData.length;i++)
- {
- record = allData[i];
- var ds_id=record.get("pdt_resource_id");
- for(var t= 0;t<needSelectIdS.length;t++)
- {
- if(ds_id == needSelectIdS[t]["pdt_resource_id"])
- {
- grid.selectedDatas.push(
- {
- page:activPage,record:record
- }
- );
- }
- }
- }
- //控件自定义选中操作函数
- pagingBar.updateInfo();
- }
- );
对于定制版,其实该HsPagingToolBar控件中就应该设置对于公共数组的接口,让引用地方可以进行设置我们需要的选中项,需要研发中心提供API接口。
本文转自danni505 51CTO博客,原文链接:http://blog.51cto.com/danni505/697054,如需转载请自行联系原作者