最愛Java

          書山有路勤為徑,學海無涯苦作舟

          ExtJs----Ext支持的控件

          基本輸入控件Ext.form.Field
              Ext.form.Field是所有表單輸入控件的基類,其他的輸入控件都是基于它擴展的來的。其定義了輸入控件通用的屬性和功能函數,這些通用的屬性和功能函數大致分為3大類:頁面顯示樣式、控件參數配置和數據有效性校驗。
              頁面顯示樣式:clearCls, cls, fieldClass, focusClass, itemCls, invalidClass, labelStyle等屬性,他們分貝用來定義不同狀態下輸入框采用的樣式。
              控件參數配置:autoCreate, disabled, fieldLabel, hideLabel, inputType, labelSeparator, name, readOnly, tabIndex, value等屬性。
             數據有效性檢驗:invalidText, msgFx, msgTarget, validateOnBlue, validateDelay, validateEvent等屬性。

              下列示例展現了空間可以使用的校驗顯示方式:

           1Ext.QuickTips.init();
           2
           3var field1 = new Ext.form.Field({
           4    fieldLabel:'qtip',
           5    msgTarget:'qtip'
           6}
          );
           7var field2 = new Ext.form.Field({
           8    fieldLabel:'title',
           9    msgTarget:'title'
          10}
          );
          11var field3 = new Ext.form.Field({
          12    fieldLabel:'side',
          13    msgTarget:'side'
          14}
          );
          15var field4 = new Ext.form.Field({
          16    fieldLabel:'under',
          17    msgTarget:'under'
          18}
          );
          19
          20var form = new Ext.form.FormPanel({
          21    title:'form',
          22    items:[field1,field2,field3,field4],
          23    renderTo:'form'
          24}
          );
          25
          26field1.markInvalid();
          27field2.markInvalid();
          28field3.markInvalid();
          29field4.markInvalid();
          30

          下拉輸入框Ext.form.TriggerField
              
          Ext.form.TriggerField是ComboBox, DateField和TimeField的父類,它既可以通過手工錄入數據,也可以通過選擇錄入數據。為了顯示下拉選擇的功能,需要覆寫它的onTriggerClick()函數以實現彈出窗口。

           1var triggerField = new Ext.form.TriggerField({
           2    fieldLabel:'選擇',
           3    name:'name',
           4    onSelect:function(record){},
           5    onTriggerClick:function(){
           6        if (this.menu == null{
           7            this.menu = selectMenu;  //selectMenu是一個預先創建的一個Ext.menu.Menu實例,實例中可以放按鈕,表格等控件。
           8        }

           9        this.menu.show(this.el,"tl-bl?");  //tl-bl?標示彈出的菜單的左上角或左下角與Ext.form.TriggerField對齊
          10    }

          11}
          );

          使用表單提交數據

           1Ext.onReady(function(){
           2    var form = new Ext.form.FormPanel({
           3        defaultType:'textfield',
           4        labelAlign:'right',
           5        title:'form',
           6        labelWidth:50,
           7        frame:true,
           8        width:220,
           9        url:'04_01.jsp',
          10        items:[{
          11            fieldLabel:'文本框',
          12            name:'text'
          13        }
          ],
          14        buttons:[{
          15            text:'按鈕',
          16            handler:function(){
          17                form.getForm().submit({
          18                    success:function(form,action){
          19                        Ext.Msg.alert('信息',action.result.msg);
          20                    }
          ,
          21                    failure:function(){
          22                        Ext.Msg.alert('錯誤','操作失敗!');
          23                    }

          24                }
          );
          25            }

          26        }
          ]
          27    }
          )
          28}
          );

              在Ext.lib.Ajax中,判斷究竟是調用success還是failure的條件與業務無關。如果Http響應成功,就執行success;如果出現404或500錯誤,就執行failure。
              form中的success和failure則是與業務相關的,只有后臺響應為true或響應的JSON中包含success:true時,才執行success()函數。不過,這樣一來failure()函數就復雜了,如何判斷是連接失敗,還是業務上出現問題呢?為了區分它們,EXT默認規定:如果響應的JSON中success不是true,并且響應的JSON中包含errors:{},那么就認為是業務錯誤;如果不包含errors:{},就認為是連接失敗。當業務錯誤時,用this.failureType=Ext.form.Action.SERVER_INVALID;標記,可以通過action.failureType進行判斷。

          使用HTML原始的提交形式

          1handler:function(){
          2    form.getForm().getEl().dom.action = '04_01.jsp';
          3    form.getForm().getEl().com.submit();
          4}

          單純Ajax

           1Ext.lib.Ajax.request(
           2    'POST',
           3    '04_01.jsp',
           4    {
           5        success:function(response){
           6            var result = Ext.decode(response.responseText);
           7            Ext.Msg.alert('信息',result.msg);
           8        }
          ,
           9        failure:function(){}
          10    }

          11)

          表單布局----默認的平鋪布局

          1items:{
          2    {fieldLabel:'倆字'},
          3    {fieldLabel:'三個字'},
          4    {fieldLabel:'四個漢字'},
          5}

              Form中的標簽默認使用左對齊的方式,一共有left, top, right三個值可以選,我們可以通過配置labelAlign : 'right'使得右對齊。標簽文字的寬度也可以設置,labelWidth : 60。如果標簽過長,文字會自動換行。按鈕位置也可以設置,有left, center, right3種選擇,默認是right。

          表單布局----平行分列布局

              
          先使用layout : 'column'來說明下面要使用的是列布局,然后在items指定的每列中使用columnWidth指定每列所占總寬度的百分比。
              如果使用了分列布局,就不能在表單中直接使用defaultType指定默認的xtype了,否則會影響布局結果。每一列中也必須手動指定使用layout : 'form',這樣才能在每列中正常顯示輸入框和對應標簽。layout : 'form'其實就是FormPanel默認使用的布局方式,即自上而下一次排列。

           1        items:[{
           2            layout:'column',
           3            items:[{
           4                columnWidth:.33,
           5                layout : 'form',
           6                items:[{xtype:'textfield',fieldLabel:'倆字'}]
           7            }
          ,{
           8                columnWidth:.33,
           9                layout : 'form',
          10                items:[{xtype:'textfield',fieldLabel:'三個字'}]            
          11            }
          ,{
          12                columnWidth:.33,
          13                layout : 'form',
          14                items:[{xtype:'textfield',fieldLabel:'四個字'}]
          15            }
          ]
          16        }
          ],

          表單布局----在布局中使用fieldset

           1items:[{
           2    layout:'column',
           3    items:[{
           4            columnWidth:.5,
           5            layout : 'form',
           6            xtype:'fieldset',
           7            title:'倆字',
           8            autoHeight:true,
           9            defaultType:'textfield',
          10            items:[{fieldLabel:'倆字'},{fieldLabel:'倆字'}]
          11        }
          ,{
          12            columnWidth:.5,
          13            layout : 'form',
          14            xtype:'fieldset',
          15            title:'三個字',
          16            autoHeight:true,
          17            defaultType:'textfield',
          18            items:[{fieldLabel:'三個字'},{fieldLabel:'三個字'},{fieldLabel:'三個字'}]
          19        }
          ]
          20    }
          ,{
          21        xtype:'fieldset',
          22        title:'四個漢字',
          23        autoHeight:true,
          24        items:[{width:345,height:100,xtype:'textarea',fieldLabel:'四個字'}]
          25}
          ]

          自定義布局:在表單中加入圖片

          1items:[
          2    {fieldLabel:'三個字'},
          3    {fieldLabel:'三個字'},
          4    {fieldLabel:'三個字'},
          5    {xtype:'panel',html:'<center><img src="user_female.png"/></center>'}
          6]

          復選框和單選框

           1{
           2    xtype:'fieldset',
           3    title:'多選',
           4    defaultType:'checkbox',
           5    hideLabels:true,
           6    items:[{boxLabel:'多選一',inputValue:'1',checked:true},{boxLabel:'多選二',inputValue:'2'},{boxLabel:'多選三',inputValue:'3'}]
           7}
          ,{
           8    xtype:'fieldset',
           9    title:'單選',
          10    defaultType:'radio',
          11    hideLabels:true,
          12    items:[{boxLabel:'單選一',name:'radio',inputValue:'1',checked:true},{boxLabel:'單選二',name:'radio',inputValue:'2'},{boxLabel:'單選三',name:'radio',inputValue:'3'}]        
          13}

          文件上傳
          1)首先,給form添加fileUpload :true參數,如:

          1var form = new Ext.form.FormPanel({
          2    labelAlign:'right',
          3    title:'form',
          4    labelWidth:50,
          5    frame:true,
          6    fielUpload:true,
          7    url:'09_01.jsp',
          8    width:280
          9}
          )

          2)其次,給form添加一個field,并為它設置inputType : 'file',如:

          1items:[{
          2    xtype:'textfield',
          3    fieldLabel:'文本框',
          4    name:'file',
          5    inputType:'file'
          6}
          ]

          posted on 2009-10-22 14:31 Brian 閱讀(2970) 評論(0)  編輯  收藏 所屬分類: JScript

          公告


          導航

          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 固始县| 文山县| 讷河市| 德清县| 射洪县| 彭水| 周至县| 阿克苏市| 隆德县| 江门市| 休宁县| 屏边| 绿春县| 揭东县| 吉林省| 久治县| 永嘉县| 昌黎县| 平湖市| 钦州市| 平顺县| 崇义县| 米林县| 酉阳| 绥棱县| 宁都县| 会宁县| 兖州市| 钟祥市| 清丰县| 晴隆县| 桃源县| 合山市| 台北县| 石林| 皋兰县| 东安县| 泌阳县| 新河县| 灯塔市| 鹿泉市|