我需要实现的是在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 + "]}");
   %> 请赐教,如果好的办法,最好能给出代码,谢谢!

解决方案 »

  1.   

    {xtype:'textfield',fieldLabel: '<fmt:message key="groupinfo.code"/>',name: 'groups.code',anchor:'95%',allowBlank:false,blankText:'<fmt:message key="groupinfo.blankText"/>'}
    name: 对象.属性
    当然你的json必须是正确的
      

  2.   


    能说明白点吗?买看明白,谢谢!这是我的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没问题,我看过
      

  3.   

    你把你弹出的 也就是增加和删除的页面发下
    这个页面其实就不需要Store 和 reader
    你在Action 要定义 一个order 对象 例如 privat Order order; 同时添加他的get set 方法
    textfield 的name 就直接用 order.id 就可以 例如 name:order.id;
      

  4.   

    getResponse().setContentType("text/plain"); 返回JSON要用这种类型
      

  5.   

    按照下面方法在gridpanel中添加单选框,当你选中某条数据进行修改的时候,可以通过SM.getSelected()获得你选中的数据(即store中的你选中的那一条),
    如: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'}
      

  6.   

    不好意思,上面添加SM的代码拷错了,下面的才是正确的
    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'}]
    })
      

  7.   

    你说的是数据grid 人家问的是添加和修改的那个页面
      

  8.   

    你form中组件的那么要与load的数据的name一致
      

  9.   

    请把答案看清楚好吗
    【我需要实现的是在grid里面选择一行,然后点击修改数据,弹出一个新的from ,这个from里面有textfield,我需要把选择的数据加载到textfield里面去】
    不在grid中做好准备工作,怎么把选中的数据添加到修改数据中的form中?
      

  10.   

    name 只需要与后台相应的对象名称保持一致就好,store中的name和form中的name没什么关系。
      

  11.   


    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);   //注意这个
    }
    });
    };
    请大家帮忙看下,谢谢!
      

  12.   

    //下面这个方法纯属急了,想测试一下,但还是没加载数据
    //加载表单数据
    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);//加载到表单 

     
    };
    请大家帮忙看下
      

  13.   

    你在Action 要定义 一个order 对象 例如 privat Order order; 同时添加他的get set 方法
    textfield 的name 就直接用 order.id 就可以 例如 name:order.id;
    你试了没?
      

  14.   

    给你个代码拿去参考
    //数据源
    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();
    }
      

  15.   


    我没有用任何框架,就jsp  我连hibernate都没用
      

  16.   

    我想知道为什么这行代码显示不出来   alert(neworderStore.getAt(0).get('id'));