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介面。
本文出自 “專註J2EE系列規範下的..” 部落格,轉載請與作者聯絡!