2013-06-26 96 views
0

我與GXT(2.2.5)的工作,並需要得到chenged複選框的行索引上的網格。我在做什麼是創建一個網格和應用GridCellRender以顯示第一列中的複選框,然後在任何複選框改變其值(在OnChange事件監聽器),改變複選框的行索引必須採取措施。這是我的代碼片刻的一部分:如何獲得所選複選框的行索引網格GXT

checkColumn.setRenderer(new GridCellRenderer() { 
     @Override 
     public Object render(ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore store, Grid gri) { 
      final CheckBox check = new CheckBox(); 
      check.addListener(Events.OnChange, new Listener<BaseEvent>() { 
       @Override 
       public void handleEvent(BaseEvent be) { 
        //Here we get the row index 
       } 
      }); 
      return check; 
     } 
    }); 

謝謝。

回答

0

你可以這樣說:

checkColumn.setRenderer(new GridCellRenderer() { 
     @Override 
     public Object render(final ModelData model, String property, ColumnData config, int rowIndex, int colIndex, final ListStore store, Grid gri) { 
      final CheckBox check = new CheckBox(); 
      check.addListener(Events.OnChange, new Listener<BaseEvent>() { 
       @Override 
       public void handleEvent(BaseEvent be) { 
        ////////// 
        int indx = store.indexOf(model); 
        ////////// 

       } 
      }); 
      return check; 
     } 
    }); 

(注意,必須轉換爲最終的模型變量)

或者,也許這樣的:

checkColumn.setRenderer(new GridCellRenderer() { 
     @Override 
     public Object render(final ModelData model, String property, ColumnData config, int rowIndex, int colIndex, final ListStore store, Grid gri) { 

      final CheckBox check = new CheckBox(); 
      check.setData("indx", store.indexOf(model)); 

      check.addListener(Events.OnChange, new Listener<BaseEvent>() { 
       @Override 
       public void handleEvent(BaseEvent be) { 
        ////////// 
        int indx = ((CheckBox) be.getSource()).getData("indx"); 
        ////////// 

       } 
      }); 
      return check; 
     } 
    }); 

我希望這有助於

+0

它不工作:\我不知道它HOY到supose是但我只是使用gridCellRenderer添加的複選框的每一行。我的網格使用一個名爲Facultad的對象(我創建的)。 –

+0

請注意,您可以看到商店和模型變量爲空調試時因變量的類型...但該方法必須退給你指數 –

+0

難道這樣的事情可以幫助您?:grid.getSelectionModel()。getSelectedItem() ; –