EXTJS4.x之grid(2)--实现添加用户功能

在上一节中我们利用GridPanel实现了后台jsp的增删改查接口,并通过store得到数据展示在grid上了。实现了基本的数据显示,这节我们将实现添加数据到用户表中,实现如下图效果

 

要达到这个效果我们要使用到ext js的Window控件,下面我们先来学习一下Window对象的一下知识。

Ext.Window是一个专门的面板用于应用程序的窗口。默认情况下Windows是浮动的,可以调整大小,,可拖动。 Windows可以被最大化,以填补视口,恢复到其事先大小,并可以被最小化。

Window通常被关联到Ext.ZIndexManager或被Ext.WindowManager管理。激活前会备份其他组件的状态。

默认情况下,Windows将被渲染到document.body的。要限制一个窗口到另一个元素只要指定renderTo属性就可以。

与所有的容器都一样,重要的是设置窗口的大小,安排所有子组件,选择一个合适的布局结构等都跟其他容器相同。

 

1、主要配置项:
      closable:是否允许关闭窗口,默认为true。
      closeAction:关闭窗口的动作,包括以下两种:
            close:从DOM删除窗口,销毁窗口及其所属组件,窗口不再可用,重新显示需要调用show方法。此为默认值。
            hide:通过设置可见性隐藏窗口,窗口还可用,调用show方法后重新显示。
      constrain:是否约束窗口只能在容器内移动,默认为false。窗口默认渲染到document.body。
      constrainHeader:是否约束窗口头部只能在容器内移动,默认为false。
      draggable:是否可拖曳,默认为true。
      resizable:是否可改变窗口的大小,默认为true。
      modal:是否为模式窗口,默认为false。
      maximizable:是否可最大化窗口,默认为false。
      maximized:是否在初始化时最大化显示窗口,默认为false。
      x:窗口的X坐标值。
      y:窗口的Y坐标值。
      manager:WindowGroup的引用。
 
      expandOnShow:是否在窗口显示时展开它,默认为true。 当取值为false时,collapsed取值为true时,窗口初始显示时收缩。
      minimizable:是否可最小化窗口,默认为false。需要自定义最小化行为。
      defaultButton:当窗口获得焦点时,默认获得焦点的按钮。
      plain:主体背景是否透明,默认为false。

 

2、主要方法:
      show( [String/Element animateTarget], [Function callback], [Object scope] ):显示窗口。
      hide( [String/Element animateTarget], [Function callback], [Object scope] ):隐藏窗口。
      center():窗口居中显示。
      close():关闭窗口,相当于closeAction值为close的情形。
      maximize():最大化窗口。
      restore():还原窗口大小。
      toggleMaximize():在最大化和还原之间切换。
 
      minimize():最小化窗口。
      setActive( Boolean active ):激活窗口。
      focus():窗口获得焦点。
      toBack():后置窗口。
      toFront( [Boolean e] ):前置窗口。
      resize( Ext.Window this, Number width, Number height ):改变大小。

 

3、Ext.WindowGroup的主要方法:
      hideAll()
      sendToBack( String/Object win )
      bringToFront( String/Object win )
      get( String/Object id )
      getActive()
 
      each( Function fn, [Object scope] )
      getBy( Function fn, [Object scope] )

 

下面我们开始动手了,打开上一节中的工程,为MyGridPanel指定一个id为myGrid,方便在程序中获取到这个控件。点击添加用户button,添加一个handler。

接下来编写handler的内容,双击handler进入代码编辑界面,输入以下代码

var win = new Ext.Window(
{
    //指定窗口的标题
    title: "添加用户",
    //窗口的宽度
    width: 347,
    //窗口的高度
    height: 250,
    //是否为模式窗口,模式窗口是指到这个窗口弹出后将不能点击后面的窗口
    modal: true,
    //窗口显示的内容,内容为一个form表单控件,在其他章节有讲到
    items: [{
        xtype: "form",
        id: "formadd",
        height: "250",
        borderStyle: "padding-top:3px",
        frame: true,
        defaultType: "textfield",
        labelAlign: "right",
        labelWidth: 57,
        defaults: {
            allowBlank: false, width: 200
        },
        items: [
        { fieldLabel: "用户名", id: "userName", blankText: "请输入用户名" },
        { fieldLabel: "密码", id: "passWord", blankText: "请输入密码" },
        { fieldLabel: "再次输入密码", id: "rePassWord", blankText: "请再次输入密码" },
        ]
    }],
    //为这个窗口配置按钮,一个确定按钮,一个取消按钮    
    buttons: [
    {
        //引用类型为button
        xtype: "button",
        //显示的text为“确定”
        text: "确定",
        //响应事件
        handler: function () {
            //验证输入的内容是否合法等,这个是表单的基本操作
            if (!Ext.getCmp("formadd").getForm().isValid()) {
                Ext.Msg.alert("提示","您输入的信息有误,请重新输入...");
                return false;
            }
            var userName = Ext.getCmp("userName").getValue("");
            var passWord = Ext.getCmp("passWord").getValue("");
            var rePassWord = Ext.getCmp("rePassWord").getValue("");

            Ext.MessageBox.wait("载入中...", "提示", { 
                interval: 100       //进度条加载速度 
            }); 

            Ext.Ajax.request({
                url: "userControl.jsp?cmd=1",
                params: {
                    "userName": userName, "passWord": passWord
                },
                success: function (reponse, option) {
                    //gridStore.reload();
                    Ext.MessageBox.hide(); 
                    Ext.Msg.alert("提示", "添加成功!"); 
                    win.close();
                    Ext.getCmp("myGrid").getStore().reload();
                },
                failure: function () {
                    Ext.MessageBox.hide(); 
                    Ext.Msg.alert("提示", "添加失败!"); 
                }
            });
        }
    },
    {
        xtype: "button",
        text: "取消",
        handler: function () {
            Ext.getCmp("userName").setValue("");
            Ext.getCmp("passWord").setValue("");
            Ext.getCmp("rePassWord").setValue("");

            win.close();
        }
    }
    ]
});
win.show();

代码都有注释了,Ext.MessageBox是extjs提供的一下常用的小窗口集合,这里用到了好几个。很简单的,不详细说了。保存工程,启动服务器就可以看到效果了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值