您好我正在使用GXT 2.2.3创建可编辑网格。我创建的列象下面这样:如何使单元格不可编辑基于gxt中可编辑网格中的另一个单元格值
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 To 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 the 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 the 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);
// 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);
现在,我想使checkinDate,CheckIntime,CheckOutDate和CheckOutTime列细胞作为不可编辑或禁用基于eventCombo箱价值的价值。
如何在eventCombo box的Listener中做到这一点。请建议。
我是GXT新手。
UPDATE
我想下面的代码禁用和启用细胞,但它禁止细胞fine.But停用后,如果我选择另一种则不会再次启用。
监听> gridAfterEditListener =新的监听器>(){
@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);
请建议如何解决此
任何在GXT有丰富经验的人请提出解决方案其紧急 – user1903120
尽管如此,我还是没有得到解决方案。请任何人都可以找到解决方案。 – user1903120