title: How to make cell as non editable based on another cell value in Editable Grid in gxt
body: <p>Hi I am creating Editable Grid using GXT 2.2.3. I created columns like below:</p>
  
  <pre><code>   List&lt;String&gt; eventList=new ArrayList&lt;String&gt;();
      eventList.add("Mark/Modify Attendance");
      eventList.add("Remove Attendance");
      eventList.add("Modify Roster");
      eventList.add("Mark OD");
      eventList.add("Forgot To Checkin");
  
   eventcombo = new SimpleComboBox&lt;String&gt;(); 
   eventcombo.setEmptyText("");
   eventcombo.setTriggerAction(TriggerAction.ALL);
      //  EventCombo.setSelection(eventList);
      CellEditor eventComboEditor = new CellEditor(eventcombo) {  
            public Object preProcessValue(Object value) {  
                if (value == null) {  
                  return value;  
                }  
                return eventcombo.findModel(value.toString());  
              }  
            public Object postProcessValue(Object value) {  
                 if (value == null) {  
                   return value;  
                 }  
               return ((ModelData) value).get("value");  
             }  
           };  
           eventcombo.setForceSelection(true);  
           eventcombo.setEmptyText("");
           eventcombo.setTriggerAction(TriggerAction.ALL); 
          eventcombo.add(eventList);
         ColumnConfig eventcolumn = new ColumnConfig();
      eventcolumn.setId("event");
      eventcolumn.setHeader("Event");
      eventcolumn.setWidth(145);
      eventcolumn.setMenuDisabled(true);
      eventcolumn.setSortable(false);
     /* */
  //  column.setEditor(new);
      eventcolumn.setEditor(eventComboEditor);
  
  
      configs.add(eventcolumn);
  
      //rosterInOut-10
         ColumnConfig rosterInOutcolumn = new ColumnConfig();
         rosterInOutcolumn.setId("rosterInOut");
         rosterInOutcolumn.setHeader("Old Roster");
         rosterInOutcolumn.setWidth(70);
         rosterInOutcolumn.setMenuDisabled(true);
         rosterInOutcolumn.setSortable(false);
      configs.add(rosterInOutcolumn);
  
  
      Rostercombo = new SimpleComboBox&lt;String&gt;();  
          CellEditor editor1 = new CellEditor(Rostercombo) {  
                public Object preProcessValue(Object value) {  
                    if (value == null) {  
                      return value;  
                    }  
                    return Rostercombo.findModel(value.toString());  
                  }  
                public Object postProcessValue(Object value) {  
                     if (value == null) {  
                       return value;  
                     }  
                   return ((ModelData) value).get("value");  
                 }  
               };  
               Rostercombo.setForceSelection(true);  
               Rostercombo.setTriggerAction(TriggerAction.ALL);  
               Rostercombo.add("OD");  
               Rostercombo.add("O");
  
      //newRosterin-11
      ColumnConfig newRosterincolumn = new ColumnConfig();
      newRosterincolumn.setId("newRosterin");
      newRosterincolumn.setHeader("New Roster In");
      newRosterincolumn.setWidth(80);
      newRosterincolumn.setEditor(editor1);
      newRosterincolumn.setMenuDisabled(true);
      newRosterincolumn.setSortable(false);
      configs.add(newRosterincolumn);
  
      //checkinout-12
       ColumnConfig checkinoutcolumn = new ColumnConfig();
       checkinoutcolumn.setId("checkinout");
       checkinoutcolumn.setHeader("Check In-Out");
       checkinoutcolumn.setWidth(80);
       checkinoutcolumn.setMenuDisabled(true);
       checkinoutcolumn.setSortable(false);
      configs.add(checkinoutcolumn);
  
      //checkinDate-13
       ColumnConfig checkinDatecolumn = new ColumnConfig();
       checkinDatecolumn.setId("checkinDate");
       checkinDatecolumn.setHeader("Check In Date");
       checkinDatecolumn.setWidth(85);
       checkinDatecolumn.setMenuDisabled(true);
       checkinDatecolumn.setSortable(false);
  
      final DateField dateField1 = new DateField();
      dateField1.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MMM/yyyy")); 
      dateField1.getDatePicker().addListener(Events.Select, new Listener&lt;DatePickerEvent&gt;() {
  
          @Override
          public void handleEvent(DatePickerEvent dpe) {
  
          //  Window.alert("Getting Roster Date here--&gt;"+grid.getColumnModel().);
          Window.alert("Getting RosterDate--."+   caseStoreModule.getModifiedRecords().get(0).get("rosterDate"));
  
  
  
          }
      });
  
      checkinDatecolumn.setEditor(new CellEditor(dateField1));
      checkinDatecolumn.setDateTimeFormat(DateTimeFormat.getFormat("dd/MMM/yyyy"));
      configs.add(checkinDatecolumn);
  
      //checkinTime-14
      ColumnConfig checkinTimecolumn=new ColumnConfig();
      checkinTimecolumn.setId("checkinTime");
      checkinTimecolumn.setHeader("Check In Time");
      checkinTimecolumn.setWidth(80);
      checkinTimecolumn.setMenuDisabled(true);
      checkinTimecolumn.setSortable(false);
      final TextField&lt;String&gt; checkintime = new TextField&lt;String&gt;();
      checkintime.setAllowBlank(true);  
      checkintime.addListener(Events.Change, new Listener&lt;BaseEvent&gt;() {
  
          @Override
          public void handleEvent(BaseEvent be) {
  
          //  Window.alert("getting the checkin time value--&gt;"+checkintime.getValue());
              String variable = checkintime.getRawValue();
              if(variable != null &amp; !variable.equalsIgnoreCase(""))
              {   
                  if(!variable.matches(REG_EXP))
                  {
                      checkintime.clear();
                      MsgBox.info("Enter time in hh:mm format");
                      checkintime.focus();
  
                      return;
                  }
              }
          }
      });
  
  
      checkinTimecolumn.setEditor(new CellEditor(checkintime));
  
      configs.add(checkinTimecolumn);
  
  
  
      //checkoutDate-15
      ColumnConfig checkoutDatecolumn=new ColumnConfig();
      checkoutDatecolumn.setId("checkoutDate");
      checkoutDatecolumn.setHeader("Check Out Date");
      checkoutDatecolumn.setWidth(90);
      checkoutDatecolumn.setMenuDisabled(true);
      checkoutDatecolumn.setSortable(false);
      DateField dateField2 = new DateField();
      dateField2.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MMM/yyyy")); 
      checkoutDatecolumn.setEditor(new CellEditor(dateField2));
      checkoutDatecolumn.setDateTimeFormat(DateTimeFormat.getFormat("dd/MMM/yyyy"));
      configs.add(checkoutDatecolumn);
  
      //checkoutTime-15
      ColumnConfig checkoutTimecolumn=new ColumnConfig();
      checkoutTimecolumn.setId("checkoutTime");
      checkoutTimecolumn.setHeader("Check Out Time");
      checkoutTimecolumn.setWidth(90);
      checkoutTimecolumn.setMenuDisabled(true);
      checkoutTimecolumn.setSortable(false);
      final TextField&lt;String&gt; checkouttime = new TextField&lt;String&gt;();
      checkouttime.setAllowBlank(true);  
      checkouttime.addListener(Events.Change, new Listener&lt;BaseEvent&gt;() {
  
          @Override
          public void handleEvent(BaseEvent be) {
  
          //  Window.alert("getting the checkouttime value--&gt;"+checkouttime.getValue());
              String variable = checkouttime.getRawValue();
              if(variable != null &amp; !variable.equalsIgnoreCase(""))
              {   
                  if(!variable.matches(REG_EXP))
                  {
                      checkouttime.clear();
                      MsgBox.info("Enter time in hh:mm format");
                      checkouttime.focus();
  
                      return;
                  }
              }
          }
      });
      checkoutTimecolumn.setEditor(new CellEditor(checkouttime));
      configs.add(checkoutTimecolumn);
  
      //for gradeCode-16
      ColumnConfig gradeCodecolumn=new ColumnConfig();
      gradeCodecolumn.setId("gradeCode");
      gradeCodecolumn.setHidden(true);
      configs.add(gradeCodecolumn);
  
      //for rosterevent-17
  ColumnConfig    rostereventcolumn=new ColumnConfig();
  rostereventcolumn.setId("rosterevent");
  rostereventcolumn.setHidden(true);
      configs.add(rostereventcolumn);
  
      //for action-18
      ColumnConfig actioncolumn=new ColumnConfig();
      actioncolumn.setId("action");
      actioncolumn.setHeader("Action");
      //column.setHidden(true);
      actioncolumn.setWidth(70);
      actioncolumn.setMenuDisabled(true);
      actioncolumn.setSortable(false);
      configs.add(actioncolumn);
  
      //for actionHidden-19
      ColumnConfig actionHiddencolumn=new ColumnConfig();
      actionHiddencolumn.setId("actionHidden");
      actionHiddencolumn.setHidden(true);
      configs.add(actionHiddencolumn);
  
      //for attendId-20
      ColumnConfig attendIdcolumn=new ColumnConfig();
      attendIdcolumn.setId("attendId");
      attendIdcolumn.setHidden(true);
      configs.add(attendIdcolumn);
  
      //for rosterChanged-21
      ColumnConfig    rosterChangedcolumn=new ColumnConfig();
      rosterChangedcolumn.setId("rosterChanged");
      rosterChangedcolumn.setHidden(true);
      configs.add(rosterChangedcolumn);
  
      // for holiday-22
      ColumnConfig holidaycolumn=new ColumnConfig();
      holidaycolumn.setId("holiday");
      holidaycolumn.setHidden(true);
      configs.add(holidaycolumn);
  
      // for checkinDateTimeHidden-23
      column=new ColumnConfig();
      column.setId("checkinDateTimeHidden");
      column.setHidden(true);
      configs.add(column);
  
      // for checkoutDateTimeHidden-24
      ColumnConfig checkoutDateTimeHiddencolumn=new ColumnConfig();
      checkoutDateTimeHiddencolumn.setId("checkoutDateTimeHidden");
      checkoutDateTimeHiddencolumn.setHidden(true);
      configs.add(checkoutDateTimeHiddencolumn);
  
      // for loginEmpEntity-25
      ColumnConfig loginEmpEntitycolumn=new ColumnConfig();
      loginEmpEntitycolumn.setId("loginEmpEntity");
      loginEmpEntitycolumn.setHidden(true);
      configs.add(loginEmpEntitycolumn);
  
      // for  halfDayLLimit-26
      ColumnConfig halfDayLLimitcolumn=new ColumnConfig();
      halfDayLLimitcolumn.setId("halfDayLLimit");
      halfDayLLimitcolumn.setHidden(true);
      configs.add(halfDayLLimitcolumn);
  
  
  
      return new ColumnModel(configs);
  </code></pre>
  
  <p>Now I want to make the checkinDate,CheckIntime,CheckOutDate and CheckOutTime column cells as Noneditable or disabled based on value of eventCombo box value.</p>
  
  <p>How to make this in the Listener of eventCombo box.Please suggest.</p>
  
  <blockquote>
    <p>I am new to GXT.</p>
    
    <p>UPDATE</p>
  </blockquote>
  
  <p>I tried below code to disable and enable the cell but it's disabling cell fine.But after disabling,if I choose another it's not enabling again.</p>
  
  <p>Listener> gridAfterEditListener = new Listener>() {</p>
  
  <pre><code>    @Override
      public void handleEvent(GridEvent&lt;AttendanceCaseCreationModel&gt; be) {
          AttendanceCaseCreationModel data = be.getModel();
           String val = data.get("event");
  
           if(val.equalsIgnoreCase("Remove Attendance")){
  
              data.set("checkinDate","");
  
  
                grid.getColumnModel().getColumnById("checkinDate").getEditor().disable();
                grid.getStore().update(data); 
                grid.getView().refresh(true);
  
  
           }
           else {
               data.set("checkinDate",""); 
               grid.getColumnModel().getColumnById("checkinDate").getEditor().enable();
           grid.getStore().update(data); 
               grid.getView().refresh(true);
  
           }
  
      }
  };
  grid.addListener(Events.AfterEdit, gridAfterEditListener); 
  </code></pre>
  
  <p>Please suggest how to resolve this</p>