How to disable certain rows selection using GWT Datagrid 2.4 -


i using gwt 2.4 version. how disable row selection in gwt datagrid.

in grid have mixed records, based on condition need disable row selection in datagrid.

for example : have 2 rows below values

emp name| emp id | status

abc | 1001 | active

abc | 1001 | in active

when user click on 2nd row should not selected.

how achieve this. please let me know.

i able achieve default checkbox selection event manager.

by default have checkboxcell handle row selection. trick can override render() method of checkboxcell , do not render checkbox if corresponding row not allowed selected not calling super.render() method.

below full working code example. can not select rows not active. please, notice parameters of constructor new checkboxcell(true, false) - important.

public widget test() {     datagrid<datagridtype> grid = new datagrid<datagridtype>();      final multiselectionmodel<datagridtype> selectionmodel = new multiselectionmodel<datagridtype>(new provideskey<datagridtype>() {         @override         public integer getkey(datagridtype item) {             return item.getrowid();         }     });     grid.setselectionmodel(selectionmodel, defaultselectioneventmanager.<datagridtype> createcheckboxmanager());      selectionmodel.addselectionchangehandler(new handler() {         @override         public void onselectionchange(selectionchangeevent event) {             window.alert(selectionmodel.getselectedset().tostring());         }     });      grid.addcolumn(new column<datagridtype, boolean>(new checkboxcell(true, false)) {         @override         public boolean getvalue(datagridtype object) {             return selectionmodel.isselected(object);         }          @override         public void render(context context, datagridtype object, safehtmlbuilder sb) {             if(object.isactive())                 super.render(context, object, sb);         }     }, "select");      textcolumn<datagridtype> namecolumn = new textcolumn<datagridtype>() {         @override         public string getvalue(datagridtype object) {             return object.getempname();         }     };      textcolumn<datagridtype> idcolumn = new textcolumn<datagridtype>() {         @override         public string getvalue(datagridtype object) {             return integer.tostring(object.getempid());         }     };      textcolumn<datagridtype> statuscolumn = new textcolumn<datagridtype>() {         @override         public string getvalue(datagridtype object) {             return object.isactive() ? "active" : "in acticve";         }     };      grid.addcolumn(namecolumn, "emp name");     grid.addcolumn(idcolumn, "emp id");     grid.addcolumn(statuscolumn, "status");      list<datagridtype> values = new arraylist<datagridtype>();     values.add(new datagridtype(0, "abc", 1001, true));     values.add(new datagridtype(1, "abc", 1001, false));     values.add(new datagridtype(2, "aaa", 1002, true));     values.add(new datagridtype(3, "aaa", 1002, false));     values.add(new datagridtype(4, "bbb", 1003, true));     values.add(new datagridtype(5, "bbb", 1003, false));      grid.setrowdata(values);      grid.setheight("500px");      window.alert("done");      return grid; }  private class datagridtype {     private int rowid;     private string empname;     private int empid;     private boolean active;      public datagridtype(int rowid, string empname, int empid, boolean active) {         this.rowid = rowid;         this.empname = empname;         this.empid = empid;         this.active = active;     }      public int getrowid() {         return rowid;     }      public string getempname() {         return empname;     }      public int getempid() {         return empid;     }      public boolean isactive() {         return active;     }      @override     public string tostring() {         return integer.tostring(rowid);     } } 

i had add unique row identifier selection id.

after each selection change see alert list of selected row ids.

enter image description here


Comments

Popular posts from this blog

sequelize.js - Sequelize group by with association includes id -

android - Robolectric "INTERNET permission is required" -

java - Android raising EPERM (Operation not permitted) when attempting to send UDP packet after network connection -