我需要实现的是在grid里面选择一行,然后点击修改数据,弹出一个新的from ,这个from里面有textfield,我需要把选择的数据加载到textfield里面去,我现在处理的思路是:先把需要加载数据的id传给jsp,然后jsp查询数据后以JSON传回个显示页面,显示页面已stort来接受JSON数据,然后我需要把这JSON数据显示到textfield里面去,我想问的是我该怎么把这JSON数据显示到textfield里面去?或者有其他的方法,请赐教!谢谢!//加载表单数据
function loadForm(orderTypeId){
orderTypeForm.form.load({
waitMsg : '正在加载数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'jsp/loadneworderdata.jsp?id='+orderTypeId,//请求的url地址
method:'GET',//请求方式
success:function(form,action){//加载成功的处理函数
//Ext.Msg.alert('提示','数据加载成功');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','数据加载失败');
loadFormData();
}
});
};这是我ext里面加载数据的方法这是我jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="org.json.*"%>
<%
//Class.forName("com.mysql.jdbc.Driver").newInstance();
String id=request.getParameter("id");
System.out.println(id);
Class.forName("com.mysql.jdbc.Driver");
//tring url ="jdbc:mysql://localhost:3306/book?username=root&password=123456";
//testDB为你的数据库名
//Connection conn= DriverManager.getConnection(url);
String url = "jdbc:mysql://127.0.0.1/testorder?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String psw = "123456";
Connection conn = DriverManager.getConnection(url,user,psw);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from ordertable where id='"+id+"'";
ResultSet rs=stmt.executeQuery(sql);
int i=1;
String result=null;
String rowcount=null;
JSONObject jsonObject = new JSONObject();
while(rs.next()) {
//Map<String,Object> tree = new HashMap<String,Object>();
//tree.put("id",i);
//tree.put("dorder", rs.getString(1));
//tree.put("xdate", rs.getString(2));
jsonObject.put("id", (Object)rs.getString(1));
jsonObject.put("dorder", (Object)rs.getString(2));
jsonObject.put("xdate", (Object)rs.getString(3));
jsonObject.put("name", (Object)rs.getString(4));
jsonObject.put("spec", (Object)rs.getString(5));
jsonObject.put("size1", (Object)rs.getString(6));
jsonObject.put("size2", (Object)rs.getString(7));
jsonObject.put("materials", (Object)rs.getString(8));
jsonObject.put("hop", (Object)rs.getString(9));
jsonObject.put("margins", (Object)rs.getString(10));
jsonObject.put("spacing", (Object)rs.getString(11));
jsonObject.put("angel", (Object)rs.getString(12));
jsonObject.put("canon", (Object)rs.getString(13));
jsonObject.put("volnme", (Object)rs.getString(14));
jsonObject.put("knife", (Object)rs.getString(15));
jsonObject.put("color", (Object)rs.getString(16));
jsonObject.put("note", (Object)rs.getString(17));
jsonObject.put("status", (Object)rs.getString(18));
jsonObject.put("jdate", (Object)rs.getString(19));
jsonObject.put("starttime", (Object)rs.getString(20));
if (i==1)
{
result = jsonObject.toString();
}
else
{
result += "," + jsonObject.toString();
}
i++;
}
//System.out.println(jsonObject.toString());
rs.close();
stmt.close();
conn.close();
rowcount=String.valueOf(i-1);
//response.getWriter().write("{total:1,stocks:[{\"id\":\"1\",\"dorder\":\"123\"}]}");
response.getWriter().write("{total:"+rowcount+",stocks:[" + result + "]}");
%> 请赐教,如果好的办法,最好能给出代码,谢谢!
function loadForm(orderTypeId){
orderTypeForm.form.load({
waitMsg : '正在加载数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'jsp/loadneworderdata.jsp?id='+orderTypeId,//请求的url地址
method:'GET',//请求方式
success:function(form,action){//加载成功的处理函数
//Ext.Msg.alert('提示','数据加载成功');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','数据加载失败');
loadFormData();
}
});
};这是我ext里面加载数据的方法这是我jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="org.json.*"%>
<%
//Class.forName("com.mysql.jdbc.Driver").newInstance();
String id=request.getParameter("id");
System.out.println(id);
Class.forName("com.mysql.jdbc.Driver");
//tring url ="jdbc:mysql://localhost:3306/book?username=root&password=123456";
//testDB为你的数据库名
//Connection conn= DriverManager.getConnection(url);
String url = "jdbc:mysql://127.0.0.1/testorder?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String psw = "123456";
Connection conn = DriverManager.getConnection(url,user,psw);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from ordertable where id='"+id+"'";
ResultSet rs=stmt.executeQuery(sql);
int i=1;
String result=null;
String rowcount=null;
JSONObject jsonObject = new JSONObject();
while(rs.next()) {
//Map<String,Object> tree = new HashMap<String,Object>();
//tree.put("id",i);
//tree.put("dorder", rs.getString(1));
//tree.put("xdate", rs.getString(2));
jsonObject.put("id", (Object)rs.getString(1));
jsonObject.put("dorder", (Object)rs.getString(2));
jsonObject.put("xdate", (Object)rs.getString(3));
jsonObject.put("name", (Object)rs.getString(4));
jsonObject.put("spec", (Object)rs.getString(5));
jsonObject.put("size1", (Object)rs.getString(6));
jsonObject.put("size2", (Object)rs.getString(7));
jsonObject.put("materials", (Object)rs.getString(8));
jsonObject.put("hop", (Object)rs.getString(9));
jsonObject.put("margins", (Object)rs.getString(10));
jsonObject.put("spacing", (Object)rs.getString(11));
jsonObject.put("angel", (Object)rs.getString(12));
jsonObject.put("canon", (Object)rs.getString(13));
jsonObject.put("volnme", (Object)rs.getString(14));
jsonObject.put("knife", (Object)rs.getString(15));
jsonObject.put("color", (Object)rs.getString(16));
jsonObject.put("note", (Object)rs.getString(17));
jsonObject.put("status", (Object)rs.getString(18));
jsonObject.put("jdate", (Object)rs.getString(19));
jsonObject.put("starttime", (Object)rs.getString(20));
if (i==1)
{
result = jsonObject.toString();
}
else
{
result += "," + jsonObject.toString();
}
i++;
}
//System.out.println(jsonObject.toString());
rs.close();
stmt.close();
conn.close();
rowcount=String.valueOf(i-1);
//response.getWriter().write("{total:1,stocks:[{\"id\":\"1\",\"dorder\":\"123\"}]}");
response.getWriter().write("{total:"+rowcount+",stocks:[" + result + "]}");
%> 请赐教,如果好的办法,最好能给出代码,谢谢!
解决方案 »
- 调用类的get方法报空指针异常
- java读取DBF字段
- 还是关于Struts2向对象传递数值的问题
- 怎样取到hibernate延迟加载被cglib代理过的子类的类型
- --->>>请问hibernate里面的hql not in 带参数怎么写?
- jpa in spring 的事务传播
- utf编码问题
- 百分求解决禁止浏览目录问题,能在tomcat4,5上运行,非常着急?
- 请教EJB高手..
- mysql-connector-java-gpl-5.1.31.msi 怎么用
- socket 反转,期待大侠!!!
- 从页面传过来的xml格式字符串取出name和value,将value的值对应赋给name取出的值
name: 对象.属性
当然你的json必须是正确的
能说明白点吗?买看明白,谢谢!这是我的store//加载新添加订单的数据集
var neworderStore = new Ext.data.Store({//配置分组数据集
//autoLoad :true,
proxy:new Ext.data.HttpProxy({url:'jsp/loadneworderdata.jsp'}),
reader:new Ext.data.JsonReader({
totalProperty:'total',
root:'stocks'
},
[
{name: 'id'},
{name: 'dorder'},
{name: 'xdate'},
{name: 'name'},
{name: 'spec'},
{name: 'size1'},
{name: 'size2'},
{name: 'materials'},
{name: 'hop'},
{name: 'margins'},
{name: 'spacing'},
{name: 'angel'},
{name: 'canon'},
{name: 'volume'},
{name: 'knife'},
{name: 'color'},
{name: 'note'},
{name: 'status'},
{name: 'jdate'},
{name: 'strattime'}
]),
failure : function() {
Ext.Msg.alert("数据加载失败!请检查");
}
});
我的JSON没问题,我看过
这个页面其实就不需要Store 和 reader
你在Action 要定义 一个order 对象 例如 privat Order order; 同时添加他的get set 方法
textfield 的name 就直接用 order.id 就可以 例如 name:order.id;
如:var data = SM.getSelected();
然后通过name值获取你想要得数据 var username = data.get('name');
然后将获取的username值付form中的textfield的value值就可以了。例如:请注意SM
var SM = new Ext.grid.CheckboxSelectionModel({singleSelect:true});
var panel = new Ext.grid.RowNumberer(),SM,
{id:'sid',header: '编号',width: 100,dataIndex:'sid'},
{header:'员工姓名',width: 100,dataIndex:'name'},
{header:'角色名称',width: 100,dataIndex:'rolename',align:'center'},
{header:'状态',width: 100,dataIndex:'state',renderer:showName,align:'center'},
{header:'创建者',width: 100,dataIndex:'createopt',align:'center'},
{header:'修改者',width: 100,dataIndex:'modifyopt',align:'center'},
{header:'创建日期',width: 120,dataIndex:'createdate',renderer : Ext.util.Format.dateRenderer('Y-m-d'),align:'center'},
{header:'修改日期',width: 120,dataIndex:'modifydate',renderer : Ext.util.Format.dateRenderer('Y-m-d'),align:'center'}
var gridpanel = new Ext.grid.GridPanel({
region:'center',
enableHdMenu: false,
border : true,//边框
margins : '0 0 0 0',//边缘
stripeRows: true,//让grid相邻两行背景色不同
columnLines: true,
store:store,
sm:SM,
columns:[new Ext.grid.RowNumberer(),SM,
{id:'sid',header: '编号',width: 100,dataIndex:'sid'},
{header:'员工姓名',width: 100,dataIndex:'name'},
{header:'角色名称',width: 100,dataIndex:'rolename',align:'center'},
{header:'状态',width: 100,dataIndex:'state',renderer:showName,align:'center'},
{header:'创建者',width: 100,dataIndex:'createopt',align:'center'},
{header:'修改者',width: 100,dataIndex:'modifyopt',align:'center'},
{header:'创建日期',width: 120,dataIndex:'createdate',renderer : Ext.util.Format.dateRenderer('Y-m-d'),align:'center'},
{header:'修改日期',width: 120,dataIndex:'modifydate',renderer : Ext.util.Format.dateRenderer('Y-m-d'),align:'center'}]
})
【我需要实现的是在grid里面选择一行,然后点击修改数据,弹出一个新的from ,这个from里面有textfield,我需要把选择的数据加载到textfield里面去】
不在grid中做好准备工作,怎么把选中的数据添加到修改数据中的form中?
var orderTypeForm = new Ext.FormPanel({
labelSeparator : ":",
frame:true,
border:false,
labelAlign: 'left',
title: '',
buttonAlign:'right',
bodyStyle:'padding:5px',
width: 600,
frame:true,
labelWidth:80,
items: [{
layout:'column', //定义该元素为布局为列布局方式
border:false,
labelSeparator:':',
items:[{
columnWidth:.5, //该列占用的宽度,标识为50%
layout: 'form',
border:false,
items: [{ //这里可以为多个Item,表现出来是该列的多行
cls : 'key',
xtype:'textfield',
fieldLabel: '客户名',
allowBlank : false,
blankText : '请填写客户名',
name: 'cuname',
id : 'cuname',
anchor:'90%'
},
{
cls : 'key',
xtype:'textfield',
fieldLabel: '单号',
allowBlank : false,
blankText : '请填写单号',
name: 'dorder',
id : 'dorder',
anchor:'90%'
},
{
cls : 'key',
xtype:'datefield',
fieldLabel: '下单时间',
width : 150,
allowBlank : false,
blankText : '不能为空',
id : 'xdate',
name : 'xdate',
emptyText:'请选择时间',
format:'Y-m-d',
anchor:'90%'
},
{
cls : 'key',
xtype:'textfield',
fieldLabel: '品名',
allowBlank : false,
blankText : '请填写名品',
name: 'name',
id : 'name',
anchor:'90%'
},
{
cls : 'key',
xtype:'textfield',
fieldLabel: '规格',
allowBlank : false,
blankText : '请填写规格',
name: 'spec',
id : 'spec',
anchor:'90%'
},
{
cls : 'key',
xtype:'textfield',
fieldLabel: '颜色',
allowBlank : false,
blankText : '请填写颜色',
name: 'color',
anchor:'90%'
},
{
cls : 'key',
xtype:'textfield',
fieldLabel: '备注',
allowBlank : false,
blankText : '请填写备注',
name: 'note',
anchor:'90%'
},
{
cls : 'key',
xtype:'datefield',
fieldLabel: '交货时间',
width : 150,
allowBlank : false,
blankText : '不能为空',
id : 'jdate',
name : 'jdate',
emptyText:'请选择时间',
format:'Y-m-d',
anchor:'90%'
}
]
},{
columnWidth:.5,
layout: 'form',
border:false,
items: [
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: '尺寸1',
allowBlank : false,
blankText : '请填写尺寸',
name: 'size1',
anchor:'50%'
},
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: '尺寸2',
allowBlank : false,
blankText : '请填写尺寸2',
id : 'size2',
name: 'size2',
anchor:'50%'
},
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: '材料',
allowBlank : false,
blankText : '请填写材料',
name: 'materials',
anchor:'50%'
},
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: '跳距',
allowBlank : false,
blankText : '请填写跳距',
name: 'hop',
anchor:'50%'
},
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: '边距',
allowBlank : false,
blankText : '请填写边距',
name: 'margins',
anchor:'50%'
},
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: '间距',
allowBlank : false,
blankText : '请填写间距',
name: 'spacing',
anchor:'50%'
},
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: 'R角',
allowBlank : false,
blankText : '请填写R角',
name: 'angel',
anchor:'50%'
},
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: '纸管内径',
allowBlank : false,
blankText : '请填写纸管内径',
name: 'canon',
anchor:'50%'
},
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: '内外卷',
allowBlank : false,
blankText : '请填写内外卷',
name: 'valume',
anchor:'50%'
},
{
cls : 'key',
xtype:'textfield',
//inputType:'password',
fieldLabel: '虚线刀',
allowBlank : false,
blankText : '虚线刀',
name: 'knife',
anchor:'50%'
}
]
}]
}],
buttons:[
{
text : '关闭',
handler : function(){
win.hide();
}
},{
text : '提交',
handler : submitForm
}
]
});
//创建弹出窗口
var win = new Ext.Window({
layout:'fit',
width:700,
closeAction:'hide',
height:400,
resizable : false,
shadow : true,
modal :true,
closable:true,
bodyStyle:'padding:5 5 5 5',
animCollapse:true,
items:[orderTypeForm]
});
//显示新建收入类型窗口
function showAddBookType(){
orderTypeForm.form.reset();
orderypeForm.isAdd = true;
win.setTitle("添加订单");
win.show();
};
//显示修改收入类型窗口
function showModifyorderType(){
var orderTypeList = getorderTypeIdList();
var num = orderTypeList.length;
if(num > 1){
Ext.MessageBox.alert("提示","每次只能修改一条收入信息。")
}else if(num == 1){
orderTypeForm.isAdd = false;
win.setTitle("修改收入信息");
win.show();
var orderTypeId = orderTypeList[0];
// var record = grid.getSelectionModel().getSelected();
// cuname.getForm().loadRecord(record);//加载到表单
loadForm(orderTypeId);
}
}; //加载表单数据
function loadForm(orderTypeId){
orderTypeForm.form.load({
waitMsg : '正在加载数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'jsp/loadneworderdata.jsp?id='+bookTypeId,//请求的url地址
method:'GET',//请求方式
success:function(form,action){//加载成功的处理函数
//Ext.Msg.alert('提示','数据加载成功');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','数据加载失败'+bookTypeId);
loadFormData(bookTypeId); //注意这个
}
});
};
请大家帮忙看下,谢谢!
//加载表单数据
function loadFormData(orderTypeId){
//加载新添加订单的数据集
var neworderStore = new Ext.data.Store({//配置分组数据集
//autoLoad :true,
proxy:new Ext.data.HttpProxy({url:'jsp/loadneworderdata.jsp?id='+bookTypeId}),
reader:new Ext.data.JsonReader({
totalProperty:'total',
root:'stocks'
},
[
{name: 'id'},
{name: 'dorder'},
{name: 'xdate'},
{name: 'name'},
{name: 'spec'},
{name: 'size1'},
{name: 'size2'},
{name: 'materials'},
{name: 'hop'},
{name: 'margins'},
{name: 'spacing'},
{name: 'angel'},
{name: 'canon'},
{name: 'volume'},
{name: 'knife'},
{name: 'color'},
{name: 'note'},
{name: 'status'},
{name: 'jdate'},
{name: 'strattime'}
]),
failure : function() {
Ext.Msg.alert("数据加载失败!请检查");
}
});
// var o = Ext.decode(response.responseText);
//Ext.getCmp("TextField的id").setValue(o.name);
for (var i = 0; i < neworderStore.getCount(); i++)
{
var record = neworderStore.getAt(i);
alert(record.get('name'));
}
Ext.getCmp("cuname").setValue('allen');
alert(neworderStore.getAt(0).get('id'));
Ext.getCmp("dorder").setValue('aBBBBB');
// var record = grid.getSelectionModel().getSelected();
// win.getForm().loadRecord(record);//加载到表单
};
请大家帮忙看下
textfield 的name 就直接用 order.id 就可以 例如 name:order.id;
你试了没?
//数据源
var store = new Ext.data.Store({
proxy:new Ext.data.HttpProxy({url:'system/findAreaInfoAction.action'}),
reader:new Ext.data.JsonReader({
totalProperty:'totalProperty',
root : 'root'
},[{name : 'sid'},
{name : 'name'},
{name : 'addr'},
{name : 'isdelete'},
{name : 'managementfee'},
{name : 'createopt'},
{name : 'createoptname'},
{name : 'modifyopt'},
{name : 'modifyoptname'},
{name : 'createdate'},
{name : 'modifydate'}
]),
method:'psot'
});
store.load();
//单选框
var SM = new Ext.grid.CheckboxSelectionModel({singleSelect:true});
//楼盘信息显示面板
var areaInfoPanel = new Ext.grid.GridPanel({
id:id,
title:'楼盘信息管理',
closable:true,
enableHdMenu: false,
stripeRows: true,//让grid相邻两行背景色不同
columnLines: true,
height: 350,
width: 600,
store:store,
sm:SM,
tbar:toolbar,
columns:[
new Ext.grid.RowNumberer(),SM,
{header:'楼盘名称',width:150,sortable: true,dataIndex:'name'},
{header:'地址',width:100,sortable: true,dataIndex:'addr'},
{header:'物业费',width:80,sortable: true,dataIndex:'managementfee',align:'right'},
{header:'创建者',width:100,sortable: true,dataIndex:'createoptname',align:'center'},
{header:'创建日期',width:100,sortable: true,renderer : Ext.util.Format.dateRenderer('Y-m-d'),dataIndex:'createdate',align:'center'},
{header:'更新者',width:100,sortable: true,dataIndex:'modifyoptname',align:'center'},
{header:'更新日期',width:100,sortable: true,renderer : Ext.util.Format.dateRenderer('Y-m-d'),dataIndex:'modifydate',align:'center'}
],
autoExpandColumn:3
});/**
* 修改楼盘信息
*/
function modifyAreaInfoWin(){
//获取选中数据
var data = SM.getSelected();
if(data == undefined){
Ext.MessageBox.alert("提示","您没有选中任何信息!");
return false;
}
form = new Ext.FormPanel({
frame:true,
labelAlign:'right',
labelWidth:60,
autoWidth:true,
autoHeight:true,
items:[{
layout:'column',
items:[{
layout:'form',
columnWidth:.50,
items:[{
xtype:'textfield',
name:'area.sid',
value:data.get('sid'),
hidden:true,
hideLabel:true
},{
xtype:'textfield',
fieldLabel:'楼盘名称',
allowBlank:false,
blankText:'楼盘名称不能为空!',
maxLength:15,
maxLengthText:'您最多只能输入15个字符!',
name:'area.name',
value:data.get('name')
}]
},{
layout:'form',
columnWidth:.50,
items:[{
xtype:'numberfield',
fieldLabel:'物业费',
name:'area.managementfee',
nanText:'您只能输入数字',
value:data.get('managementfee')
}]
}]
},{
xtype:'textfield',
name:'area.addr',
value:data.get('addr'),
fieldLabel:'地址',
maxLength:50,
maxLengthText:'您最多只能输入50个字符!',
anchor:'96%'
}]
});
var win = new Ext.Window({
title:'修改楼盘信息',
width:450,
autoHeight:true,
closeAction:'close',
modal:true,
items:[
form
],
buttonAlign:'center',
buttons:[{
text:'保存',
icon: "../image/button_picture/save.png",
handler:function(){
form.getForm().submit({
url:'system/modifyAreaInfoAction.action',
waitMsg:'正在提交数据',
success:function(){
Ext.MessageBox.alert('提示','数据保存成功!');
store.removeAll();
store.proxy.setUrl('system/loadAreaInfoAction.action');
store.load(); //grid加载数据
win.close();
},
failure:function(form,action){
if(action.failureType=='client'){
Ext.MessageBox.alert('错误','数据保存失败,请检查数据格式是否有误!');
}else if(action.failureType=='server'){
if(action.result.msg!=null&&action.result.msg==1){
store.removeAll();
store.proxy.setUrl('system/loadAreaInfoAction.action');
store.load(); //grid加载数据
win.close();
Ext.MessageBox.alert('提示','您要修改的数据已经存在!');
}else{
Ext.MessageBox.alert('错误','系统错误,请联系管理员!');
}
}
}
});
}
},{
text:'关闭',
icon: "../image/button_picture/cancel.png",
handler:function(){
win.close();
}
}]
});
win.show();
}
我没有用任何框架,就jsp 我连hibernate都没用