java - How to make cell as non editable based on another cell value in Editable Grid in gxt -
hi creating editable grid using gxt 2.2.3. created columns below:
list<string> eventlist=new arraylist<string>(); eventlist.add("mark/modify attendance"); eventlist.add("remove attendance"); eventlist.add("modify roster"); eventlist.add("mark od"); eventlist.add("forgot checkin"); eventcombo = new simplecombobox<string>(); 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<string>(); 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<datepickerevent>() { @override public void handleevent(datepickerevent dpe) { // window.alert("getting roster date here-->"+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<string> checkintime = new textfield<string>(); checkintime.setallowblank(true); checkintime.addlistener(events.change, new listener<baseevent>() { @override public void handleevent(baseevent be) { // window.alert("getting checkin time value-->"+checkintime.getvalue()); string variable = checkintime.getrawvalue(); if(variable != null & !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<string> checkouttime = new textfield<string>(); checkouttime.setallowblank(true); checkouttime.addlistener(events.change, new listener<baseevent>() { @override public void handleevent(baseevent be) { // window.alert("getting checkouttime value-->"+checkouttime.getvalue()); string variable = checkouttime.getrawvalue(); if(variable != null & !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); // holiday-22 columnconfig holidaycolumn=new columnconfig(); holidaycolumn.setid("holiday"); holidaycolumn.sethidden(true); configs.add(holidaycolumn); // checkindatetimehidden-23 column=new columnconfig(); column.setid("checkindatetimehidden"); column.sethidden(true); configs.add(column); // checkoutdatetimehidden-24 columnconfig checkoutdatetimehiddencolumn=new columnconfig(); checkoutdatetimehiddencolumn.setid("checkoutdatetimehidden"); checkoutdatetimehiddencolumn.sethidden(true); configs.add(checkoutdatetimehiddencolumn); // loginempentity-25 columnconfig loginempentitycolumn=new columnconfig(); loginempentitycolumn.setid("loginempentity"); loginempentitycolumn.sethidden(true); configs.add(loginempentitycolumn); // halfdayllimit-26 columnconfig halfdayllimitcolumn=new columnconfig(); halfdayllimitcolumn.setid("halfdayllimit"); halfdayllimitcolumn.sethidden(true); configs.add(halfdayllimitcolumn); return new columnmodel(configs);
now want make checkindate,checkintime,checkoutdate , checkouttime column cells noneditable or disabled based on value of eventcombo box value.
how make in listener of eventcombo box.please suggest.
i new gxt.
update
i tried below code disable , enable cell it's disabling cell fine.but after disabling,if choose it's not enabling again.
listener> gridaftereditlistener = new listener>() {
@override public void handleevent(gridevent<attendancecasecreationmodel> 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);
please suggest how resolve this
instead thinking of disabling , enabling cell, hide , show cell using css. below code saves me reach requirement.
gridcellrenderer<attendancecasecreationmodel> checkinrenderer=new gridcellrenderer<attendancecasecreationmodel>() { @override public object render(attendancecasecreationmodel model, string property, columndata config, int rowindex, int colindex, liststore<attendancecasecreationmodel> store, grid<attendancecasecreationmodel> grid) { string color="pink"; if(eventcombo.getvalue()!=null){ if(eventcombo.getrawvalue().equalsignorecase("forgot checkin") || eventcombo.getrawvalue().equalsignorecase("mark/modify attendance")){ color="pink"; } else{ config.style=config.style+ ";visibility: hidden;"; } } config.style=config.style+ ";background-color:" + color + ";"; config.style=config.style+ ";display: block;"; object value = model.get(property); return value; } };
Comments
Post a Comment