ExtJS2 0开发与实践笔记 1 ——ExtJS中的Dialog与Form

这篇博客介绍了如何在ExtJS2.0中使用Dialog和Form。通过示例代码展示了如何创建确定按钮、确认对话框、输入框和进度条功能,并提供了Form的基本生成方式,包括TextField的使用和数据提交。
               
ExtJS2.0中提供了一整套的web表示层UI解决方案,令我们可以非常轻易的实现平时较为复杂的javascript操作,在此我以表示层开发中使用较多的Dialog与Form功能进行一次ExtJS2.0的实现演示。

ExtJS2.0的配置及运行方式请参阅 ExtJS2.0开发与实践笔记[0]-初识ExtJS

DialogExt.js (此中包含了ExtJS的确定,分支选择,进度条,输入框等四个应用实例)
/**/ /**
 * 
 */

var  DialogExt = function () ...
    /**//**
     * 追踪输出
     * @param {Object} str
     */

    var trace=function(str)...{
        //在ExtJS2.0中,log由Ext统一调度
        Ext.log(str);
    }
;
    //设置Ext.Button别名为Button
    var Button=Ext.Button;
    //设置Ext.MessageBox别名为MessageBox
    var MessageBox=Ext.MessageBox;

    //变量设置,用于保存DialogExt自身及当中键钮
    var root;   
    var btn0;
    var btn1;
    var btn2;
    var btn3;
    
    //返回操作
    return ...{
        //初始化函数
        init:function()...{
            //设定root等于this
            root=this; 
            //生成Ext按钮,绑定数据到Element,renderTo为绑定的按钮名,text为输出内容
            btn0=new Button(...{renderTo:'a',text:'确定选项'});
            btn1=new Button(...{renderTo:'b',text:'yes/no选项'});
            btn2=new Button(...{renderTo:'c',text:'输入框选项'});
            btn3=new Button(...{renderTo:'d',text:'进度条选项'});

            //确定选项
            btn0.on('click',function() ...{
                MessageBox.alert(
                    '消息框',
                    'Ext很简单。',
                    root.onResult);
            }
);

            //yes/no选项
            btn1.on('click',function(evt) ...{
                MessageBox.confirm(
                    '提问',
                    'Ext是否很容易掌握?', 
                    root.onResult);
            }
);

            //输入框选项
            btn2.on('click',function(evt) ...{
                 MessageBox.prompt(
                    '输入框',
                    '输入内容:',
                    root.onResult);
            }
);

            //进度条选项
            btn3.on('click',function() ...{
                //生成进度条,分别设定了标题,信息,宽,是否自动前进进度,是否自动关闭进度5项
                 MessageBox.show(...{
                   title   :'进度条',
                   msg     :'初始化中…',
                   width   :240,
                   progress:true,
                   closable:false
                }
);

                //进度条定时处理
                var f=function(v) ...{
                    return function()...{
                    if (v<=10) ...{
                         MessageBox.updateProgress(
                            v/10,'读取进度 '+v+'/10');
                        }
 else ...{
                         //隐藏Ext消息框
                         MessageBox.hide();
                        }

                    }
;
                }
;
                //进度条时间设定
                for (var i=1;i<=11;i++) ...{
                     setTimeout(f(i),i*1000);
                }

            }
);
        }
,
        //当前操作对象输出
        onResult:function(button,text)...{
            trace("点击按钮:"+button+" 输出文本:"+text);
        }

    }
;
}
();
// 设定onReady,Ext将在dom加载完毕后自动调用其中操作
Ext.onReady(DialogExt.init,DialogExt, true );

Dialog.html
< html >
< head >
     < meta  http-equiv ="Content-Type"  content ="text/html; charset=UTF-8" >
     < title > DialogExt </ title >
     <!-- 加载ExtJs资源[当调用Ext.log调试时,需要使用debug方式的js] -->
     < link  rel ="stylesheet"  type ="text/css"  href ="resources/css/ext-all.css"   />
     < script  type ="text/javascript"  src ="adapter/ext/ext-base.js" ></ script >
     < script  type ="text/javascript"  src ="ext-all-debug.js" ></ script >
     <!-- 加载我的js文件 -->
     < script  type ="text/javascript"  src ="DialogExt.js" ></ script >
</ head >
< body >
     <!-- 设置Element,以供DialogExt.js调用 -->
     < table  cellspacing ="5" >
         < tr >
             < td >< div  id ="a" ></ div ></ td >
             < td >< div  id ="b" ></ div ></ td >
             < td >< div  id ="c" ></ div ></ td >
             < td >< div  id ="d" ></ div ></ td >    
         </ tr >
     </ table >
</ body >
</ html >

效果图如下:




form应用实例,在此我演示了Ext中简单的Form生成方式。

FormExt.js
FormExt = function () ... {
    var trace=function(str)...{
        Ext.log(str);
    }
;
    //1.1版为Ext.form.Form
    var Form=Ext.form.FormPanel;
    var MessageBox=Ext.MessageBox;
    var TextField=Ext.form.TextField;
    //变量设置
    var root;     
    var form;      
    var textField0;
    var textField1;
    var textField2;
    var textField3;
    return ...{
        //初始化FormExt
        init:function()...{
            root=this;

            //生成窗体
            form=new Form(...{
                //样式
                baseCls: 'x-plain',
                //label宽
                labelWidth: 75,
                //数据提交地址
                url:'save.jspa'
            }
);

            //生成TextField
            textField0=new TextField(...{
                fieldLabel:'姓名',
                name      :'name',
                width     :175,
                allowBlank:false
            }
);
            textField1=new TextField(...{
                fieldLabel:'地址',
                name      :'address',
                width     :175
            }
);
            textField2=new TextField(...{
                fieldLabel:'年齢',
                name      :'age',
                width     :175
            }
);
            textField3=new TextField(...{
                fieldLabel:'email',
                name      :'email',
                //验证类型为email
                vtype     :'email',
                width     :175
            }
);
            
            //将TextField加载入form
            form.add(textField0,textField1,textField2,textField3);
        
            //生成按钮
            form.addButton('保存',function()...{
                MessageBox.alert('消息框','保存数据')}
);
            form.addButton('取消',function()...{
                MessageBox.alert('消息框','取消操作')}
);
            
            //将form内容实施到名称为frmExt的div上
            form.render('frmExt');
        }

    }
;
    
}
();
// 设定onReady,Ext将在dom加载完毕后自动调用其中操作
Ext.onReady(FormExt.init,FormExt, true );


FormExt.html
< html >
< head >
     < meta  http-equiv ="Content-Type"  content ="text/html; charset=UTF-8" >
     < title > FormExt </ title >
     <!-- ExtJS资源引入 -->
     < link  rel ="stylesheet"  type ="text/css"  href ="resources/css/ext-all.css"   />
     < script  type ="text/javascript"  src ="adapter/ext/ext-base.js" ></ script >
     < script  type ="text/javascript"  src ="ext-all-debug.js" ></ script >
     <!-- 我的js文件 -->
     < script  type ="text/javascript"  src ="FormExt.js" ></ script >
</ head >
< body >
     <!-- frame -->
     < div  style ="width:300px;" >
         < div  class ="x-box-tl" >< div  class ="x-box-tr" >< div  class ="x-box-tc" ></ div ></ div ></ div >
         < div  class ="x-box-ml" >< div  class ="x-box-mr" >< div  class ="x-box-mc" >
             < h3  style ="margin-bottom:5px;" > Ext的form </ h3 >
         < div  id ="frmExt" ></ div >
         </ div ></ div ></ div >
         < div  class ="x-box-bl" >< div  class ="x-box-br" >< div  class ="x-box-bc" ></ div ></ div ></ div >
     </ div >
</ body >
</ html >


ExtJS自2.0开始UI库已经有了极大的丰富,基本可满足我们日常开发所需的一切效果,而在Java操作中我们习以为常的很多功能,都能够在Ext找到对应的操作。在下回我将着重介绍 Ext中Layout的使用。

PS:由于ExtJS类库较多,所以将于较后进行介绍,目前仅以实例为主,现阶段请参阅ExtJS2.0的doc文档。           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值