我创建了一个可编辑的网格,其中只有3列可编辑。 我需要检索在这些可编辑单元格中输入的数字,并将它们添加到同一网格的其他单元格中显示。我已经将storeListener添加到包含预加载的网格数据的ListStore。并覆盖storeUpdate(StoreEvent se)方法。但我没有得到如何使用此更新事件检索更新的数据....请帮助我们....... 代码就像这样
package org.openxdata.analyzer.client;
import java.util.ArrayList;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.GridEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.google.gwt.user.client.Element;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import java.util.List;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.StoreEvent;
import com.extjs.gxt.ui.client.store.StoreListener;
import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.data.BaseModel;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.form.NumberField;
import com.extjs.gxt.ui.client.data.ModelData;
public class Grid1 extends Viewport {
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
setStyleAttribute("margin", "10px");
final Window w = new Window();
w.setHeading("grids");
w.setSize(600,250);
w.setModal(true);
//w.setLayout(new RowLayout(Orientation.VERTICAL));
w.setLayout(new FitLayout());
w.setResizable(false);
FormData formData = new FormData("98%");
List<ColumnConfig> col = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig();
column.setId("disease");
column.setWidth(150);
TextField<String> text = new TextField<String>();
text.setAllowBlank(false);
text.setAutoValidate(true);
//column.setEditor(new CellEditor(text));
col.add(column);
column = new ColumnConfig();
column.setId("exposure");
column.setWidth(120);
TextField<String> text1 = new TextField<String>();
text1.setAllowBlank(false);
text1.setAutoValidate(true);
//column.setEditor(new CellEditor(text1));
col.add(column);
column = new ColumnConfig();
column.setId("plus");
column.setHeader("Exposure");
column.setWidth(80);
final NumberField text2 = new NumberField();
text2.setAllowBlank(false);
text2.setAutoValidate(true);
column.setEditor(new CellEditor(text2));
col.add(column);
column = new ColumnConfig();
column.setId("minus");
column.setHeader("Exposure");
column.setWidth(80);
final NumberField text3 = new NumberField();
text3.setAllowBlank(false);
text3.setAutoValidate(true);
column.setEditor(new CellEditor(text3));
col.add(column);
column = new ColumnConfig();
column.setId("total");
column.setHeader("Totals");
column.setWidth(80);
final NumberField text4 = new NumberField();
text4.setAllowBlank(false);
text4.setAutoValidate(true);
column.setEditor(new CellEditor(text4));
column.setAlignment(HorizontalAlignment.RIGHT);
col.add(column);
//ColumnModel cm = new ColumnModel(col);
ListStore<Grid2> employeeList = new ListStore<Grid2>();
employeeList.add(cool.getgrid());
employeeList.addStoreListener(new StoreListener<Grid2>() {
@Override
public void storeUpdate(StoreEvent<Grid2> se) {
//doStoreUpdate(se);
}
});
ColumnModel cm = new ColumnModel(col);
final EditorGrid<Grid2> grid = new EditorGrid<Grid2>(employeeList, cm);
//grid.setStyleAttribute("borderTop", "none");
//grid.setAutoExpandColumn("name");
grid.setBorders(true);
grid.setStripeRows(true);
/*
grid.addListener(Events.OnChange, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent ce) {
}
});
*/
w.add(grid);
w.show();
}
}
class Grid2 extends BaseModel {
private static final long serialVersionUID = 1L;
public Grid2(){
}
public Grid2 ( String dis, String exp, Integer x,Integer y) {
set("disease", dis);
set("exposure", exp);
set("plus", x);
set("minus", y);
}
public Grid2 (String dis, String exp, Integer x,
Integer y, Double v) {
// this(dis, exp, x,y,v);
set("disease", dis);
set("exposure", exp);
set("plus", x);
set("minus", y);
set("total", v);
}
public Grid2(String a,String b,String c,String d,String t){
set("disease",a);
set("exposure",b);
set("plus",c);
set("minus",d);
set("total",t);
}
public Integer getplus() {
return (Integer)get("plus");
}
public Integer getminus() {
return (Integer)get("minus");
}
public class TestData {
public List<Grid2> getData()
{
List<Grid2> lt= new ArrayList<Grid2>();
lt.add(new Grid2("Christina Blake","Information Technology",1,2,1.23));
lt.add(new Grid2("Heriberto Rush","Information Technology",3,4,1.334));
return lt;
}
}
}
class cool {
public static List<Grid2> getgrid()
{
List<Grid2> data = new ArrayList<Grid2>();
//data.add(new Grid(" "," ","Exposure"," ","Totals"));
data.add(new Grid2(" "," ","(+)","(-)"," "));
data.add(new Grid2("'Disease'","(+)",0,0,0.00));
data.add(new Grid2(" ","(-)",0,0,0.00));
data.add(new Grid2("Totals"," ",0,0,0.00));
return data;
}
}
答案 0 :(得分:0)
我只是对你做了一些修改代码只是看看这个代码这将帮助你。
package org.openxdata.analyzer.client;
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.GridEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.StoreEvent;
import com.extjs.gxt.ui.client.store.StoreListener;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.Window;
import com.extjs.gxt.ui.client.widget.form.NumberField;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.google.gwt.user.client.Element;
public class Grid1 extends Viewport {
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
setStyleAttribute("margin", "10px");
final Window w = new Window();
w.setHeading("grids");
w.setSize(600,250);
w.setModal(true);
//w.setLayout(new RowLayout(Orientation.VERTICAL));
w.setLayout(new FitLayout());
w.setResizable(false);
FormData formData = new FormData("98%");
List<ColumnConfig> col = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig();
column.setId("disease");
column.setWidth(150);
TextField<String> text = new TextField<String>();
text.setAllowBlank(false);
text.setAutoValidate(true);
//column.setEditor(new CellEditor(text));
col.add(column);
column = new ColumnConfig();
column.setId("exposure");
column.setWidth(120);
TextField<String> text1 = new TextField<String>();
text1.setAllowBlank(false);
text1.setAutoValidate(true);
//column.setEditor(new CellEditor(text1));
col.add(column);
column = new ColumnConfig();
column.setId("plus");
column.setHeader("Exposure");
column.setWidth(80);
final NumberField text2 = new NumberField();
text2.setAllowBlank(false);
text2.setAutoValidate(true);
column.setEditor(new CellEditor(text2));
col.add(column);
column = new ColumnConfig();
column.setId("minus");
column.setHeader("Exposure");
column.setWidth(80);
final NumberField text3 = new NumberField();
text3.setAllowBlank(false);
text3.setAutoValidate(true);
column.setEditor(new CellEditor(text3));
col.add(column);
column = new ColumnConfig();
column.setId("total");
column.setHeader("Totals");
column.setWidth(80);
final NumberField text4 = new NumberField();
text4.setAllowBlank(false);
text4.setAutoValidate(true);
column.setEditor(new CellEditor(text4));
column.setAlignment(HorizontalAlignment.RIGHT);
col.add(column);
//ColumnModel cm = new ColumnModel(col);
ListStore<Grid2> employeeList = new ListStore<Grid2>();
employeeList.add(Cool.getgrid());
employeeList.addStoreListener(new StoreListener<Grid2>() {
@Override
public void storeUpdate(StoreEvent<Grid2> se) {
//doStoreUpdate(se);
}
});
ColumnModel cm = new ColumnModel(col);
final EditorGrid<Grid2> grid = new EditorGrid<Grid2>(employeeList, cm);
//grid.setStyleAttribute("borderTop", "none");
//grid.setAutoExpandColumn("name");
grid.setBorders(true);
grid.setStripeRows(true);
/*
grid.addListener(Events.OnChange, new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent ce) {
}
});
*/
w.add(grid);
w.show();
grid.addListener(Events.AfterEdit, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
GridEvent ge = (GridEvent) be;
Double plusTotal = 0.0;
Double minusTotal = 0.0;
for(int i=1 ; i < grid.getStore().getCount();i++ ){
if(grid.getStore().getAt(i).get("disease").toString().equals("Totals")){
grid.getStore().getAt(i).set("plus",plusTotal);
grid.getStore().getAt(i).set("minus",minusTotal);
grid.getStore().getAt(i).calculateTotal();
grid.getStore().commitChanges();
}else{
plusTotal = plusTotal + (grid.getStore().getAt(i).getplus());
minusTotal = minusTotal + (grid.getStore().getAt(i).getminus());
}
}
grid.getSelectionModel().getSelectedItem().calculateTotal();
grid.getStore().commitChanges();
}
});
}
}
package org.openxdata.analyzer.client;
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.data.BaseModel;
class Grid2 extends BaseModel {
private static final long serialVersionUID = 1L;
public Grid2(){
}
public Grid2 ( String dis, String exp, Integer x,Integer y) {
set("disease", dis);
set("exposure", exp);
set("plus", x);
set("minus", y);
}
public Grid2 (String dis, String exp, Integer x,
Integer y, Double v) {
// this(dis, exp, x,y,v);
set("disease", dis);
set("exposure", exp);
set("plus", x);
set("minus", y);
set("total", v);
}
public Grid2(String a,String b,String c,String d,String t){
set("disease",a);
set("exposure",b);
set("plus",c);
set("minus",d);
set("total",t);
}
public Double getplus() {
return Double.valueOf(get("plus").toString());
}
public Double getminus() {
return Double.valueOf(get("minus").toString());
}
public void calculateTotal(){
set("total",(getplus() - getminus()));
}
public class TestData {
public List<Grid2> getData()
{
List<Grid2> lt= new ArrayList<Grid2>();
lt.add(new Grid2("Christina Blake","Information Technology",1,2,1.23));
lt.add(new Grid2("Heriberto Rush","Information Technology",3,4,1.334));
return lt;
}
}
}
package org.openxdata.analyzer.client;
import java.util.ArrayList;
import java.util.List;
public class Cool {
public static List<Grid2> getgrid()
{
List<Grid2> data = new ArrayList<Grid2>();
//data.add(new Grid(" "," ","Exposure"," ","Totals"));
data.add(new Grid2(" "," ","(+)","(-)"," "));
data.add(new Grid2("'Disease'","(+)",0,0,0.00));
data.add(new Grid2(" ","(-)",0,0,0.00));
data.add(new Grid2("Totals"," ",0,0,0.00));
return data;
}
}