Gird自動選中特定的行

Ext中的Grid列表僅僅提供了按Index號進行選中行,並不能按特定的字段名匹配進行行的選中,即沒有類似Grid.selectRowByColName的方法提供,因此需要自己進行Index數組的拼裝,然後再利用selectRows進行勾選。

提供如下代碼案例:

 版本一:

  1. //need select 
  2.        resIdS = getResourcesByOrderIdOrPdtId.synExecute({pdt_id:pdtId}); 
  3.        resIdS = resIdS.dataSetResult[0].data; 
  4.         
  5.        //datasource 
  6.        var re = resDataSet.getResultData().dataSetResult[0].data; 
  7.         
  8.        //container 
  9.        var arr=new Array(); 
  10.         
  11.        //match 
  12.        for (var t = 0;t<re.length;t++){ 
  13.             var pdtResId=re[t]["pdt_resource_id"]; 
  14.             for(var i= 0;i<resIdS.length;i++){ 
  15.                 if(pdtResId == resIdS[i]["pdt_resource_id"]){ 
  16.                    arr[i] = t; 
  17.                 } 
  18.             } 
  19.        } 
  20.         
  21.        //select 
  22.        resGrid.selectRows(arr); 

 版本二:

  1. /** 
  2. * 1.select directly 
  3. */ 
  4. thisComp.store.on('load',function(store,records,options) 
  5.   var record = MainWin.pdtInfo.getSelectionData(); 
  6.   pdtId = record.get("pdt_id"); 
  7.   resIdS = getResourcesByOrderIdOrPdtId.synExecute( 
  8.   { 
  9.     pdt_id:pdtId 
  10.   } 
  11.   ); 
  12.   resIdS = resIdS.dataSetResult[0].data; 
  13.   var arr=new Array(); 
  14.   for(var i= 0;i<resIdS.length;i++) 
  15.   { 
  16.     var index = resGrid.store.findExact("pdt_resource_id",resIdS[i]["pdt_resource_id"]); 
  17.     if(index >= 0 ) 
  18.     { 
  19.       arr.push(index); 
  20.     } 
  21.   } 
  22.   resGrid.selectRows(arr); 
  23. ); 

 

定製版:

根據恆生已封裝的代碼進行把需要選的維護到在控件中的公共數組,有控件自動進行選中操作,代碼如下:

 

  1. /** 
  2. * 2.push to common select data 
  3. */ 
  4. var pagingBar = thisComp.pageBar; 
  5. pagingBar.on("change",function(bar,data,o) 
  6.    
  7.   var activPage =  bar.getPageData().activePage; 
  8.   //dataset 
  9.   var pageDataSet = resDataSet.getResultData().dataSetResult[0].data; 
  10.   //need select 
  11.   var rec = MainWin.pdtInfo.getSelectionData(); 
  12.   pdtId = rec.get("pdt_id"); 
  13.   needSelectIdS = getResourcesByOrderIdOrPdtId.synExecute( 
  14.   { 
  15.     pdt_id:pdtId 
  16.   } 
  17.   ); 
  18.   needSelectIdS = needSelectIdS.dataSetResult[0].data; 
  19.   var grid = bar.grid; 
  20.   var allData = grid.getAllData(); 
  21.   var record = null
  22.    
  23.   for(var i=0;i<allData.length;i++) 
  24.   { 
  25.     record = allData[i]; 
  26.     var ds_id=record.get("pdt_resource_id"); 
  27.     for(var t= 0;t<needSelectIdS.length;t++) 
  28.     { 
  29.       if(ds_id == needSelectIdS[t]["pdt_resource_id"]) 
  30.       { 
  31.         grid.selectedDatas.push( 
  32.         { 
  33.           page:activPage,record:record 
  34.         } 
  35.         ); 
  36.       } 
  37.     } 
  38.   } 
  39. //控件自定義選中操作函數
  40.   pagingBar.updateInfo(); 
  41. ); 

對於定製版,其實該HsPagingToolBar控件中就應該設置對於公共數組的接口,讓引用地方可以進行設置我們需要的選中項,需要研發中心提供API接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章