`
qinjingkai
  • 浏览: 259818 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Ext之自动加载Form

阅读更多

      最近客户提了一个新需求,大体如下;当他们在填充信息的form中输入了一个输入域(在数据库对应字段为主键)之后,鼠标离开后,程序自动检查有没有对应记录,如果有的话,把数据库中记录的各字段填充到当前form;刚开始是想用一个Ext.Ajax来解决问题,不过觉得这样的方式比较麻烦,最后还是用Ext自带的load来做,用这种方法不再要对服务器返回的数据做任何的后处理,而是自动的把后台返回的数据填充到当前对应字段,真是high到极点了;思路大体如下:

 

1  编写页面,并用某个动作或者事件注册页面中的 form的load事件

 

2 后台返回数据 自动填充到form

 

 

以下是对应的一 个demo:

1 页面代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>测试001.html</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css" href="../scripts/ext/resources/css/ext-all.css"/>
    <script type="text/javascript" src="../scripts/ext/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="../scripts/ext/ext-all.js"></script>
    <script type="text/javascript" src="../scripts/ext/examples.js"></script>
    <script type="text/javascript" src="../scripts/ext/ext-lang-zh_CN.js"></script>
  
  
    <script type="text/javascript">
  
     var  testForm;
     var  testWindow;
  
    function doSubmit(){
     alert("准备load信息");
     testForm.form.load({
       waitTitle:'请稍候',
       waitMsg:'正在加载数据',
       //url:"loadData.txt",
       url:"../loadFormData.do",
       success:function(action,form){ alert("result---"+action.result.sucess);  alert("加载成功了");},
       failure:function(action,form){alert("result---"+action.result.failure);alert("加载失败------");}
     
   
   
   
   
     });
 

    }
  
  
  
  
  
  
     function createForm(){
       testForm=new Ext.FormPanel({
           id:'testform',
           name:'testform',
           frame:true,
           width:400,
           height:400,
           items:[{
               xtype:'fieldset',
               title:'学生基本信息',
               id:'stuinfo',
               name:'stuinfo',
               width:400,
               height:200,
               collapsible:true,
               items:[{
                      xtype:'textfield',
                      fieldLabel:'名字008',
                      name:'name',
                      id:'name',
                      //value:'http://',
                      anchor:'95%',
                     listeners:{
                       blur:function(tf){
                            if(tf.getValue().trim().length>0){
                                 testForm.getForm().load({
                                    url:'../loadFormData.do',
                                    params:{
                                      pid:tf.getValue()
                                    },
                                    success:function(form,action){
                                          alert("公司资料加载成功了");
                                    },
                                    failure:function(form,action){
                                          alert("公司资料加载失败了");
                                    }
                                 });
                            }else{
                                alert("请填写name");
                          
                            }
                       }
                   
                   
                     }

                      },
                      {
                           xtype:'textfield',
                            fieldLabel:'性别',
                            id:'sex',
                            name:'sex',
                            anchor:'95%'
                      }
                      
               ]
            
             
           }],
           buttons:[
           {
             text:'提交',
             handler:doSubmit
           },{
               text:'清空'
           }
         
           ],
           keys:[{
           key:Ext.EventObject.ENTER,
           fn:doSubmit,
           scope:this
         
         
           }]
     
       });
   
   
   
       testWindow=new Ext.Window({
          
           id:'testwindow',
           name:'testwindow',
           width:testForm.width,
           //height:testForm.width,
           items:[testForm],
           onEsc:function(){
             alert("关闭了");
           }
         
     
       });
   
       testWindow.show();
   
     }
   
   
      Ext.onReady(function(){
         Ext.QuickTips.init();
            //Ext.form.Field.prototype.msgTarget='side';
        createForm();
      });
  
  
  
    </script>
 

  </head>
 
  <body>
 
  </body>
</html>


2 后台代码:

package action;

import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import entity.Person;

import service.TreeService;
import util.Factory;
import util.Print;
import util.Tools;

public class LoadFormDataAction extends Action{

    private TreeService treeService;
  
    private PrintWriter out;
  
  
    public ActionForward execute(ActionMapping mapping,ActionForm form,
            HttpServletRequest request,HttpServletResponse response)throws Exception{
      
           Print.contrlPrint("到达了LoadFormDataAction");
      
           response.setContentType("text/x-json;charset=UTF-8");
         
           System.out.println("pid---"+request.getParameter("pid"));
           out=response.getWriter();
           Person p=new Person();
           p.setName("name");
           p.setSex("100");
           /*
            *  {
    success:  true ,data:{
        name:  "name" ,
        sex:  100
    }
}
            *
            * */
           String json="{success:true,data:"+Tools.ObjToJson(p)+"}";
           System.out.println("json--\n"+json);
        out.println(json);
        out.flush();
        out.close();
         
        return null;
      
    }



}


后台返回数据格式如下:

{success:true,data:{"name":"name","sex":"100"}}


分享到:
评论
1 楼 leonelwong 2009-06-04  
不错不错,

相关推荐

    Ext 开发指南 学习资料

    4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 4.4. 起点高撒,从comboBox往上蹦 4.4.1. 凭空变出个comboBox来。 4.4.2. 把select变成comboBox。 4.4.3. ...

    EXT2.0中文教程

    4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 4.4. 起点高撒,从comboBox往上蹦 4.4.1. 凭空变出个comboBox来。 4.4.2. 把select变成comboBox。 4.4.3. ...

    Ext Js权威指南(.zip.001

    9.4.10 自动布局:ext.layout.container.auto / 453 9.4.11 表格布局:ext.layout.container.table / 454 9.4.12 列布局:ext.layout.container.column / 455 9.4.13 自适应布局:ext.layout.container....

    EXT教程EXT用大量的实例演示Ext实例

    4.1. 不用ext的form啊,不怕错过有趣的东西吗? 4.2. 慢慢来,先建一个form再说 4.3. 胡乱扫一下输入控件 4.4. 起点高撒,从comboBox往上蹦 4.4.1. 凭空变出个comboBox来。 4.4.2. 把select变成comboBox。 ...

    ExtJSWeb应用程序开发指南(第2版)

    4.1.7 Ext.form.field.Checkbox复选框和Ext.form.field.Radio单选框 4.1.8 Ext.form.CheckboxGroup和Ext.form.RadioGroup 4.1.9 Ext.form.field.Trigger触发字段 4.1.10 Ext.form.field.Spinner微调字段 4.1.11 ...

    精通JS脚本之ExtJS框架.part1.rar

    7.2.2 多行文本输入控件Ext.form.TextArea 7.2.3 单选框 7.2.4 复选框 7.2.5 下拉列表框 7.2.6 日期输入控件Ext.form.DateField 7.2.7 在线编辑器Ext.form.HtmlEditor 7.3 ExtJS表单组件的综合应用 第8章 ...

    简单的两种Extjs formpanel加载数据的方式

    则数据便可自动加载在formpanel中对应的控件。2。formpanel数据源是单独的,则store传入到formpanel页面后,还需要手动将formpanel中的每个控件用value赋值,形如: 代码如下:&lt;span xss=removed&gt;{ xtype: ...

    webext-options-sync:帮助您管理和自动保存扩展程序的选项。 Chrome和Firefox

    将自动加载和自动保存添加到您的选项&lt;form&gt; 在更新上运行迁移 这也使您可以在webext-options-sync-per-domain的帮助下轻松地使用。 安装 您可以下载并将其包含在manifest.json 。 或使用npm : npm install...

    精通JS脚本之ExtJS框架.part2.rar

    7.2.2 多行文本输入控件Ext.form.TextArea 7.2.3 单选框 7.2.4 复选框 7.2.5 下拉列表框 7.2.6 日期输入控件Ext.form.DateField 7.2.7 在线编辑器Ext.form.HtmlEditor 7.3 ExtJS表单组件的综合应用 第8章 ...

    ExtAspNet_v2.3.2_dll

    -增加示例:form/form_validate.aspx +2009-10-19 v2.1.3 +增加支持在AJAX时改变的控件属性列表(/ajax.aspx)。 -ExtAspNet支持原生的AJAX,也就是说控件的属性改变在AJAX过程中会反映到页面中,但并不是...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -这样所有需要占据全屏的Panel(不管你是Accordion,Panel,ContentPanel,Form,GroupPanel,SimpleForm,Tree还是Grid,TabStrip)都可以通过这种方式全屏。 -简单方便,示例可以参考 default.aspx 或者 other\...

    70款经典Dreamweaver插件

    advopenwindow 弹出窗口(窗口居中、总在最前面、自动关闭、全屏、无边框窗口) averagedistribute 单元格平均分布 Quick_Title 建立文字型的Title说明 Open_Browser_Window+ 操作弹出式窗口升级版 StyleApplier 表格...

    Dreamweaver 插件集

    弹出窗口(窗口居中、总在最前面、自动关闭、全屏、无边框窗口) averagedistribute 单元格平均分布 Quick_Title 建立文字型的Title说明 Open_Browser_Window+ 操作弹出式窗口升级版 StyleApplier 表格的鼠标触发效果 ...

Global site tag (gtag.js) - Google Analytics