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接口。

本文出自 “专注J2EE系列规范下的..” 博客,转载请与作者联系!

你可能感兴趣的:(js,ext,grid,休闲,selectrows)