天天看點

Gird自動選中特定的行

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( 

  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,如需轉載請自行聯系原作者

繼續閱讀