-
关于gwt-ext grid 的问题25
我在界面上添加了两个grid,其中一grid1显示数据库表test1中的内容,双击grid1某一行,根据双击grid1某一行某一列的数据,按条件检索数据库表test2中的数据,并在grid2中显示出来。各位大大这个功能如何实现???
问题补充:
谢谢楼上,我想我用的是服务端与客户端通信,我的现在定义了如下方法
1、已定义好impl中的queryData()方法,客户端能正常调用
public class InfoListActionImpl extends RemoteServiceServlet implements
private static final long serialVersionUID = 3340062097368093852L;
public String[][] queryData(){
String[][] allInfo = null;
String query = "select 材料名称,规格型号,计量单位,期末库存,期末库存金额 from 设备仓库库存情况表 where 期末库存>0 order by 材料名称,规格型号";
try{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String URL = "jdbc:jtds:sqlserver://127.0.0.1:1433/db_wzgl;USER=sa;PASSWORD=sa";
Connection conn = DriverManager.getConnection(URL);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(query);
int i = 0;
int rows = 0;
if (rs.last()){
rows = rs.getRow();
rs.beforeFirst();
}
ResultSetMetaData rsm = rs.getMetaData();
int columns = rsm.getColumnCount();
allInfo = new String[rows][columns];
while (rs.next()) {
for (int j = 0; j < columns; j++){
allInfo[i][j] = rs.getString(j + 1);
}
i++;
}
rs.close();
stmt.close();
conn.close();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
return allInfo;
}
2、定义了async接口
public interface InfoListActionAsync {
public void queryData(AsyncCallback<String[][]> callback);
}
3、客户端脚本
public class InfoList implements EntryPoint {
private GridPanel grid;
private GridPanel grid1;
//@SuppressWarnings("unchecked")
public void onModuleLoad() {
InfoListActionAsync action = InfoListAction.Util.getInstance();
action.queryData(new AsyncCallback() {
public void onFailure(Throwable caught) {
}
public void onSuccess(Object result) {
Panel panel = new Panel();
panel.setBorder(false);
panel.setPaddings(15);
RecordDef recordDef = new RecordDef(new FieldDef[] {
new StringFieldDef("材料名称"),
new StringFieldDef("规格型号"),
new StringFieldDef("计量单位"),
new StringFieldDef("期末库存"),
new StringFieldDef("期末库存金额") });
String[][] data = (String[][]) result;
MemoryProxy proxy = new MemoryProxy(data);
ArrayReader reader = new ArrayReader(recordDef);
final Store store = new Store(proxy, reader,false);
ColumnConfig clmcColumn = new ColumnConfig("材料名称", "材料名称", 220, false);
clmcColumn.setAlign(TextAlign.CENTER);
ColumnConfig ggxhColumn = new ColumnConfig("规格型号", "规格型号", 400, false);
ggxhColumn.setAlign(TextAlign.CENTER);
ColumnConfig jldwColumn = new ColumnConfig("单位", "计量单位", 60, false);
jldwColumn.setAlign(TextAlign.CENTER);
ColumnConfig qmkcColumn = new ColumnConfig("数量", "期末库存", 110, false);
qmkcColumn.setAlign(TextAlign.CENTER);
ColumnConfig qmkcjeColumn = new ColumnConfig("金额", "期末库存金额", 150, false);
qmkcjeColumn.setAlign(TextAlign.CENTER);
ColumnModel columnModel = new ColumnModel(new ColumnConfig[]{
clmcColumn,
ggxhColumn,
jldwColumn,
qmkcColumn,
qmkcjeColumn
});
grid = new GridPanel();
grid.setHeight(400);
grid.setWidth(975);
grid.setTitle("库存明细查询");
grid.setStore(store);
grid.setColumnModel(columnModel);
grid.setTrackMouseOver(false);
grid.setLoadMask(true);
grid.setSelectionModel(new RowSelectionModel());
grid.setFrame(true);
grid.setStripeRows(true);
grid.setIconCls("grid-icon");
Toolbar topToolbar = new Toolbar();
topToolbar.addFill();
grid.setTopToolbar(topToolbar);
GridSearchPlugin gridSearch = new GridSearchPlugin(GridSearchPlugin.TOP);
gridSearch.init(grid);
gridSearch.setMode(GridSearchPlugin.LOCAL);
grid.addPlugin(gridSearch);
store.load();
panel.add(grid);
RecordDef recordDef1 = new RecordDef(new FieldDef[] {
new StringFieldDef("仓库名称"),
new StringFieldDef("库存数量"),
new StringFieldDef("库存金额"),
new StringFieldDef("当月消耗"),
new StringFieldDef("消耗金额") });
String[][] data1 = null;
data1 = new String[1][5];
MemoryProxy proxy1 = new MemoryProxy(data1);
ArrayReader reader1 = new ArrayReader(recordDef1);
final Store store1 = new Store(proxy1, reader1,false);
ColumnConfig clmcColumn1 = new ColumnConfig("仓库名称", "仓库名称", 320, false);
clmcColumn1.setAlign(TextAlign.CENTER);
ColumnConfig ggxhColumn1 = new ColumnConfig("库存数量", "库存数量", 110, false);
ggxhColumn1.setAlign(TextAlign.CENTER);
ColumnConfig jldwColumn1 = new ColumnConfig("库存金额", "库存金额", 200, false);
jldwColumn1.setAlign(TextAlign.CENTER);
ColumnConfig qmkcColumn1 = new ColumnConfig("当月消耗", "当月消耗", 110, false);
qmkcColumn1.setAlign(TextAlign.CENTER);
ColumnConfig qmkcjeColumn1 = new ColumnConfig("消耗金额", "消耗金额", 200, false);
qmkcjeColumn1.setAlign(TextAlign.CENTER);
ColumnModel columnModel1 = new ColumnModel(new ColumnConfig[]{
clmcColumn1,
ggxhColumn1,
jldwColumn1,
qmkcColumn1,
qmkcjeColumn1
});
grid1 = new GridPanel();
grid1.setHeight(160);
grid1.setWidth(975);
grid1.setStore(store1);
grid1.setColumnModel(columnModel1);
grid1.setTrackMouseOver(false);
grid1.setLoadMask(true);
grid1.setSelectionModel(new RowSelectionModel());
grid1.setFrame(true);
grid1.setStripeRows(true);
grid.addGridRowListener(new GridRowListener(){
public void onRowDblClick(GridPanel grid, int rowIndex, EventObject e){
store1.load();
}
public void onRowClick(GridPanel grid, int rowIndex, EventObject e){
}
public void onRowContextMenu(GridPanel grid, int rowIndex, EventObject e){
}
});
panel.add(grid1);
RootPanel.get().add(panel);
}
});
}
}
问题是我如何在定义并调用一个带参数的queryData1()查询方法,根据前台onRowDblClick事件双击的某一行莫一列的数据检索数据库,并将数据返回前台。
不胜感谢!!!!
问题补充:
我已经在服务端定义了一个querydata1方法并在onRowDblClick成功调用,但是代码很繁琐,各位能不能给优化优化,下面是我的从新写得客户端代码:
public class InfoList implements EntryPoint {
private GridPanel grid;
private GridPanel grid1;
//@SuppressWarnings("unchecked")
public void onModuleLoad() {
final InfoListActionAsync action = InfoListAction.Util.getInstance();
action.queryData(new AsyncCallback() {
public void onFailure(Throwable caught) {
}
public void onSuccess(Object result) {
Panel panel = new Panel();
panel.setBorder(false);
panel.setPaddings(15);
/*Button iconButton = new Button("执行查询", new ButtonListenerAdapter() {
public void onClick(Button button, EventObject e) {
}
});
panel.add(iconButton);*/
RecordDef recordDef = new RecordDef(new FieldDef[] {
new StringFieldDef("材料名称"),
new StringFieldDef("规格型号"),
new StringFieldDef("计量单位"),
new StringFieldDef("期末库存"),
new StringFieldDef("期末库存金额") });
String[][] data = (String[][]) result;
MemoryProxy proxy = new MemoryProxy(data);
ArrayReader reader = new ArrayReader(recordDef);
final Store store = new Store(proxy, reader,false);
ColumnConfig clmcColumn = new ColumnConfig("材料名称", "材料名称", 220, false);
clmcColumn.setAlign(TextAlign.CENTER);
ColumnConfig ggxhColumn = new ColumnConfig("规格型号", "规格型号", 400, false);
ggxhColumn.setAlign(TextAlign.CENTER);
ColumnConfig jldwColumn = new ColumnConfig("单位", "计量单位", 60, false);
jldwColumn.setAlign(TextAlign.CENTER);
ColumnConfig qmkcColumn = new ColumnConfig("数量", "期末库存", 110, false);
qmkcColumn.setAlign(TextAlign.CENTER);
ColumnConfig qmkcjeColumn = new ColumnConfig("金额", "期末库存金额", 150, false);
qmkcjeColumn.setAlign(TextAlign.CENTER);
ColumnModel columnModel = new ColumnModel(new ColumnConfig[]{
clmcColumn,
ggxhColumn,
jldwColumn,
qmkcColumn,
qmkcjeColumn
});
grid = new GridPanel();
grid.setHeight(400);
grid.setWidth(975);
grid.setTitle("库存明细查询");
grid.setStore(store);
grid.setColumnModel(columnModel);
grid.setTrackMouseOver(false);
grid.setLoadMask(true);
grid.setSelectionModel(new RowSelectionModel());
grid.setFrame(true);
grid.setStripeRows(true);
grid.setIconCls("grid-icon");
/*final PagingToolbar pagingToolbar = new PagingToolbar(store);
pagingToolbar.setPageSize(14);
pagingToolbar.setDisplayInfo(true);
pagingToolbar.setDisplayMsg("当前显示的数据为: {0} - {1} of {2}");
pagingToolbar.setEmptyMsg("无显示数据");
NumberField pageSizeField = new NumberField();
pageSizeField.setWidth(40);
pageSizeField.setSelectOnFocus(true);
pageSizeField.addListener(new FieldListenerAdapter(){
public void onSpecialKey(Field field, EventObject e){
if (e.getKey() == EventObject.ENTER){
int pageSize = Integer.parseInt(field.getValueAsString());
pagingToolbar.setPageSize(pageSize);
}
}
});
ToolTip toolTip = new ToolTip("更改每页显示的数据,按回车生效");
toolTip.applyTo(pageSizeField);
pagingToolbar.addField(pageSizeField);
grid.setBottomToolbar(pagingToolbar);
grid.addListener(new PanelListenerAdapter(){
public void onRender(Component component){
store.load(0, 14);
}
});
*/
Toolbar topToolbar = new Toolbar();
topToolbar.addFill();
grid.setTopToolbar(topToolbar);
GridSearchPlugin gridSearch = new GridSearchPlugin(GridSearchPlugin.TOP);
gridSearch.init(grid);
gridSearch.setMode(GridSearchPlugin.LOCAL);
grid.addPlugin(gridSearch);
/*Toolbar bottomToolbar = new Toolbar();
bottomToolbar.addFill();
bottomToolbar.addButton(new ToolbarButton("条件清除",
new ButtonListenerAdapter() {
public void onClick(Button button, EventObject e) {
grid.clearSortState(true);
}
}));
grid.setBottomToolbar(bottomToolbar);*/
store.load();
final RecordDef recordDef1 = new RecordDef(new FieldDef[] {
new StringFieldDef("仓库名称"),
new StringFieldDef("库存数量"),
new StringFieldDef("库存金额"),
new StringFieldDef("当月消耗"),
new StringFieldDef("消耗金额") });
ColumnConfig clmcColumn1 = new ColumnConfig("仓库名称", "仓库名称", 320, false);
clmcColumn1.setAlign(TextAlign.CENTER);
ColumnConfig ggxhColumn1 = new ColumnConfig("库存数量", "库存数量", 110, false);
ggxhColumn1.setAlign(TextAlign.CENTER);
ColumnConfig jldwColumn1 = new ColumnConfig("库存金额", "库存金额", 200, false);
jldwColumn1.setAlign(TextAlign.CENTER);
ColumnConfig qmkcColumn1 = new ColumnConfig("当月消耗", "当月消耗", 110, false);
qmkcColumn1.setAlign(TextAlign.CENTER);
ColumnConfig qmkcjeColumn1 = new ColumnConfig("消耗金额", "消耗金额", 200, false);
qmkcjeColumn1.setAlign(TextAlign.CENTER);
ColumnModel columnModel1 = new ColumnModel(new ColumnConfig[]{
clmcColumn1,
ggxhColumn1,
jldwColumn1,
qmkcColumn1,
qmkcjeColumn1
});
String[][] data1 = null;
data1 = new String[1][5];
data1[0][0]= "";
data1[0][1]= "";
data1[0][2]= "";
data1[0][3]= "";
data1[0][4]= "";
MemoryProxy proxy1 = new MemoryProxy(data1);
ArrayReader reader1 = new ArrayReader(recordDef1);
Store store1 = new Store(proxy1, reader1,false);
store1.load();
grid.addGridRowListener(new GridRowListener(){
public void onRowDblClick(GridPanel grid, int rowIndex, EventObject e){
action.queryData1(new AsyncCallback(){
public void onFailure(Throwable caught) {
}
public void onSuccess(Object result) {
final RecordDef recordDef1 = new RecordDef(new FieldDef[] {
new StringFieldDef("仓库名称"),
new StringFieldDef("库存数量"),
new StringFieldDef("库存金额"),
new StringFieldDef("当月消耗"),
new StringFieldDef("消耗金额") });
ColumnConfig clmcColumn1 = new ColumnConfig("仓库名称", "仓库名称", 320, false);
clmcColumn1.setAlign(TextAlign.CENTER);
ColumnConfig ggxhColumn1 = new ColumnConfig("库存数量", "库存数量", 110, false);
ggxhColumn1.setAlign(TextAlign.CENTER);
ColumnConfig jldwColumn1 = new ColumnConfig("库存金额", "库存金额", 200, false);
jldwColumn1.setAlign(TextAlign.CENTER);
ColumnConfig qmkcColumn1 = new ColumnConfig("当月消耗", "当月消耗", 110, false);
qmkcColumn1.setAlign(TextAlign.CENTER);
ColumnConfig qmkcjeColumn1 = new ColumnConfig("消耗金额", "消耗金额", 200, false);
qmkcjeColumn1.setAlign(TextAlign.CENTER);
ColumnModel columnModel1 = new ColumnModel(new ColumnConfig[]{
clmcColumn1,
ggxhColumn1,
jldwColumn1,
qmkcColumn1,
qmkcjeColumn1
});
String[][] data1 = (String[][]) result;
MemoryProxy proxy1 = new MemoryProxy(data1);
ArrayReader reader1 = new ArrayReader(recordDef1);
Store store1 = new Store(proxy1, reader1,false);
grid1.reconfigure(store1, columnModel1);
store1.reload();
}
});
}
public void onRowClick(GridPanel grid, int rowIndex, EventObject e){
}
public void onRowContextMenu(GridPanel grid, int rowIndex, EventObject e){
}
});
panel.add(grid);
grid1 = new GridPanel();
grid1.setHeight(160);
grid1.setWidth(975);
grid1.setStore(store1);
grid1.setColumnModel(columnModel1);
grid1.setTrackMouseOver(false);
grid1.setLoadMask(true);
grid1.setSelectionModel(new RowSelectionModel());
grid1.setFrame(true);
grid1.setStripeRows(true);
panel.add(grid1);
RootPanel.get().add(panel);
}
});
}
}2008年6月29日 17:08
2个答案 按时间排序 按投票排序
-
实现grid1的rowdblclick事件处理,在事件处理方法中获取Grid1当前选择行的数据,然后组成查询条件,对grid2的store重新装载
grid.on('rowdblclick', function(grid, rowIndex, e) { var record = grid.getStore().getAt(rowIndex); if (record) { var params = {}; params['cond1'/*此处是grid2的store中附加到URL后参数名*/] = record.get('field1'/*此处是grid1中的列名*/); params['cond2'/*此处是grid2的store中附加到URL后参数名*/] = record.get('field2'/*此处是grid1中的列名*/); var store = grid2.getStore(); Ext.apply(store.baseParams, params); store.load(); } });
2008年6月29日 22:23
相关推荐
GWT-Ext 是基于 Google Web Toolkit(GWT)和 ExtJs 的功能强大的网页开发控件库。它非常适用于进行纯 Java 语言的富 Internet 应用的快速开发。本系列文章将详细讲解 GWT-Ext 的基本结构和功能特点,并通过代码示例...
Gwt-ext学习笔记之基础篇、安装、配置、例子。
最好的gwt-ext学习资料,适合初学者。
GWT-Ext 是基于 Google Web Toolkit(GWT)和 ExtJs 的功能强大的网页开发控件库。它扩展了 GWT,在 ExtJs 的基础上实现了有排序功能的表格(Grid)、分页、过滤,支持有拖拽功能的树,高度可定制的组合下拉框...
GWT-Ext 是基于 Google Web Toolkit(GWT)和 ExtJs 的功能强大的网页开发控件库。它非常适用于进行纯 Java 语言的富 Internet 应用的快速开发。本系列文章将详细讲解 GWT-Ext 的基本结构和功能特点,并通过代码示例...
gwt-ext-选课系统gwt-ext-选课系统gwt-ext-选课系统gwt-ext-选课系统
Gwt-ext学习笔记,Gwt-ext学习笔记,Gwt-ext学习笔记
GWT-Ext 控件演示 GWT-Ext 控件演示
GWT-Ext 2.0.5 has been released. Grab the distribution from the Downloads area. GWT-Ext 2.0.5 supports GWT 1.5 final (1.5.2), Firefox3 and Chrome.
gwt-ext-treegwt-ext-treegwt-ext-treegwt-ext-treegwt-ext-tree
NULL 博文链接:https://kenter1643.iteye.com/blog/323084
个人学习收集网上资料辛苦整理而成; GWT-Ext 整理 chm java js GWT-Ext资料整理.chm
这是一篇非常好的GWT-Ext的文章,讲解非常详细,从入门的讲解示例再到精通一应俱全,学习GWT-Ext的朋友可以看看
GWT-Ext_体验之旅.doc GWT-Ext_体验之旅.doc GWT-Ext_体验之旅.doc
各种各样的资源找齐还是要点时间的: 1、下载gwt-ext2.04解压 2、解压本资源,导入Eclipse 3、将解压gwt-ext2.04得到一jar包设入classpath 4、按载图编辑你的src 文件夹
gwt-ext相关jar包及资源
一份不错的gwt-ext培训教程,值得一看!
个人写的gwt-ext教程,希望对大家有用