Ext动态添加一行组件

用的column布局,点击一个按钮能添加一行组件,如文本框,有下拉框等。

Exmyth
  1 /*!
  2  * Ext JS Library 3.4.0
  3  * Copyright(c) 2006-2011 Sencha Inc.
  4  * licensing@sencha.com
  5  * http://www.sencha.com/license
  6  */
  7 Ext.onReady(function(){
  8                       // 添加按钮
  9     var newDept_action = new Ext.Action({
 10         cls: 'x-btn-text-icon bmenu',
 11         icon: 'icon-add',
 12         text: '添加新的部门(新的一行)',
 13         handler: function(){
 14             id = id + 1;
 15              
 16             //添加新的fieldSet
 17             var org_fieldSet = new Ext.Panel({            
 18                 //column布局控件开始                
 19                 id: 'org_fieldSet_' + id,
 20                 layout: 'column',
 21                 border: false,
 22                 items: [//组件开始
 23                 {
 24                     columnWidth: .2,
 25                     layout: 'form',
 26                     border: false,
 27                     items: [{
 28                         //为空
 29                         blankText: '组织名称不能为空',
 30                         emptyText: '',
 31                         editable: false,
 32                         triggerAction: 'all',
 33                         allowBlank: false,
 34                         //为空                        
 35                         xtype: 'textfield',
 36                         fieldLabel: '组织名称',
 37                         id: 'org_field_orgName_' + id,
 38                         name: 'org_field_orgName_' + id,
 39                         anchor: '90%'
 40                     }]
 41                 } //组件结束
 42 , //组件开始
 43                 {
 44                     columnWidth: .2,
 45                     layout: 'form',
 46                     border: false,
 47                     items: [{
 48                         //为空
 49                         blankText: '上级部门不能为空',
 50                         emptyText: '',             
 51                         editable: false,
 52                         triggerAction: 'all',
 53                         allowBlank: false,
 54                         //为空
 55                          
 56                         xtype: 'textfield',
 57                         fieldLabel: '上级部门',
 58                         id: 'org_field_orgParent_' + id,
 59                          
 60                         anchor: '90%'
 61                     }]
 62                 } //组件结束
 63 , //按钮开始
 64                 {
 65                     columnWidth: .2,
 66                     layout: 'form',
 67                     border: false,
 68                     items: [{
 69                      
 70                         xtype: 'button',
 71                         text: '选择上级部门',
 72                         scope: this,
 73                         handler: function(){  
 74                         }
 75                     }]
 76                 } //按钮结束
 77 , //组件开始
 78                 {
 79                     columnWidth: .2,
 80                     layout: 'form',
 81                     border: false,
 82                     items: [{
 83                         //为空
 84                         blankText: '上级部门不能为空',
 85                         emptyText: '', 
 86                         editable: false,
 87                         triggerAction: 'all',
 88                         allowBlank: false,
 89                         //为空
 90                         //xtype: 'hidden',
 91                         xtype: 'textfield',
 92                         fieldLabel: '本部门ID',
 93                          
 94                         value: 'org_field_orgId_' + id,
 95                         anchor: '90%'
 96                     }]
 97                 } //组件结束
 98 , //按钮开始
 99                 {
100                     columnWidth: .2,
101                     layout: 'form',
102                     border: false,
103                     items: [{
104                      
105                         xtype: 'button',
106                         text: '删除',
107                         value: id,
108                         scope: this,
109                         handler: function(obj){
110                             var del_id = obj.value;
111                             //var field_1 = Ext.getCmp('org_field_orgName_' + del_id);
112                             var fieldSet_1 = Ext.getCmp('org_fieldSet_' + del_id);
113                             //删除一行
114                             simple.remove(fieldSet_1, true);
115                              
116                         }
117                     }]
118                 } //按钮结束
119 ]
120              
121                 //column布局控件结束
122             });
123             //添加fieldSet
124             simple.add(org_fieldSet);
125             //重新剧新
126             simple.doLayout();
127         },
128         iconCls: 'blist'
129     });
130   var first_Org_fieldSet = new Ext.Panel({
131      
132         //column布局控件开始
133          
134         id: 'org_fieldSet_' + id,
135         layout: 'column',
136         border: false,
137         items: [//组件开始
138         {
139             columnWidth: .2,
140             layout: 'form',
141             border: false,
142             items: [{
143                 //为空
144                 blankText: '组织名称不能为空',
145                 emptyText: '',
146                  
147                 editable: false,
148                 triggerAction: 'all',
149                 allowBlank: false,
150                 //为空
151                  
152                 xtype: 'textfield',
153                 fieldLabel: '组织名称',
154                 id: 'org_field_orgName_' + id,
155                 name: 'org_field_orgName_' + id,
156                 anchor: '90%'
157              
158             }]
159         } //组件结束
160 , //组件开始
161         {
162             columnWidth: .2,
163             layout: 'form',
164             border: false,
165             items: [{
166                 //为空
167                 blankText: '上级部门不能为空',
168                 emptyText: '',
169 
170                 editable: false,
171                 triggerAction: 'all',
172                 allowBlank: false,
173                 //为空
174                  
175                 xtype: 'textfield',
176                 fieldLabel: '上级部门',
177                 id: 'org_field_orgParent_' + id,
178                  
179                 anchor: '90%'
180             }]
181         } //组件结束
182 , //按钮开始
183         {
184             columnWidth: .2,
185             layout: 'form',
186             border: false,
187             items: [{
188                 xtype: 'button',
189                 text: '选择上级部门',
190                 scope: this,
191                 handler: function(){
192                 }
193             }]
194         } //按钮结束
195 , //组件开始
196         {         
197             columnWidth: .2,
198             layout: 'form',
199             border: false,
200             items: [{
201                 //为空
202                 blankText: '上级部门不能为空',
203                 emptyText: '',
204 
205                 editable: false,
206                 triggerAction: 'all',
207                 allowBlank: false,
208                 //为空
209                 //xtype: 'hidden',
210                 xtype: 'textfield',
211                 fieldLabel: '本部门ID',
212                  
213                 value: 'org_field_orgId_' + id,
214                 anchor: '90%'             
215             }]
216         } //组件结束
217 , //按钮开始
218         {
219             columnWidth: .2,
220             layout: 'form',
221             border: false,
222             items: [{
223              
224                 xtype: 'button',
225                 text: '删除',
226                 value: id,
227                 scope: this,
228                  
229                 handler: function(obj){
230                     var del_id = obj.value;
231                     //var field_1 = Ext.getCmp('org_field_orgName_' + del_id);
232                     var fieldSet_1 = Ext.getCmp('org_fieldSet_' + del_id);
233 
234                     simple.remove(fieldSet_1, true);
235                 }
236             }]
237         } //按钮结束
238 ]
239      
240         //column布局控件结束
241     });
242   //定义表单
243     var simple = new Ext.FormPanel({
244         labelAlign: 'left',
245         title: '添加子部门',
246         buttonAlign: 'right',
247         bodyStyle: 'padding:5px',
248         //width: 600,
249         autoHeight: true,
250         autoWidth: true,
251         //
252         frame: true,
253         labelWidth: 80,
254         // items: [ ]        ,
255         buttons: [{
256             text: '保存',
257             type: 'submit',
258             //定义表单提交事件
259             handler: function(){
260                 if (simple.form.isValid()) {//验证合法后使用加载进度条
261                     Ext.MessageBox.show({
262                         title: '请稍等',
263                         msg: '正在加载...',
264                         progressText: '',
265                         width: 300,
266                         progress: true,
267                         closable: false,
268                         animEl: 'loding'
269                     });
270                     //控制进度速度
271                     var f = function(v){
272                         return function(){
273                             var i = v / 11;
274                             Ext.MessageBox.updateProgress(i, '');
275                         };
276                     };
277                      
278                     for (var i = 1; i < 13; i++) {
279                         setTimeout(f(i), i * 150);
280                     }
281                      
282                     //提交到服务器操作
283                     simple.form.doAction('submit', {
284                         url: newSaveOrgFrameUrl,//文件路径
285                         method: 'post',//提交方法post或get
286                         params: '',
287                         //提交成功的回调函数
288                         success: function(form, action){
289                             if (action.result.msg == 'ok') {
290 
291                                 Ext.MessageBox.show({
292                                     title: '系统提示信息',
293                                     msg: '添加成功!',
294                                     buttons: Ext.MessageBox.OK,
295                                     icon: Ext.MessageBox.INFO,
296                                     fn: function(btn, text){
297 
298                                     }
299                                 });
300                             }
301                             else {
302                                 Ext.Msg.alert('添加错误', action.result.msg);
303                             }
304                         },
305                         //提交失败的回调函数
306                         failure: function(){
307                             Ext.Msg.alert('错误', '服务器出现错误请稍后再试!');
308                         }
309                     });
310                 }
311             }
312         }, {
313             text: '重置',
314             handler: function(){
315                 simple.form.reset();
316             }//重置表单
317         }, {
318             text: '取消',
319             handler: function(){
320                 win.close();
321             }//重置表单
322         }]
323     });
324     //添加第一个fieldSet
325     simple.add(first_Org_fieldSet);
326    //菜单面板
327     var panel = new Ext.Panel({
328         bodyStyle: 'width:100%',
329         autoWidth: true,
330         autoHeight: true,
331         //autoScroll: true,
332         renderTo: Ext.getBody(),
333         //
334          
335         title: '',
336         bodyStyle: 'padding:10px;',
337         tbar: [{
338             xtype: 'tbseparator'
339         }, newDept_action, { // <-- Add the action directly to a toolbar
340             xtype: 'tbseparator'
341         }],
342         items: [simple]
343      
344     }); 
345      
346    // return panel;
347      simple.render(document.body);
348 
349 });

另一种编程风格

/*!
 * Ext JS Library 3.4.0
 * Copyright(c) 2006-2011 Sencha Inc.
 * licensing@sencha.com
 * http://www.sencha.com/license
 */
Ext.onReady(function(){
                      // 添加按钮
    var newDept_action = new Ext.Action({
        cls: 'x-btn-text-icon bmenu',
        icon: 'icon-add',
        text: '添加新的部门(新的一行)',
        handler: function(){
            id = id + 1;
             
            //添加新的fieldSet
            var org_fieldSet = new Ext.Panel({            
                //column布局控件开始                
                id: 'org_fieldSet_' + id,
                layout: 'column',
                border: false,
                items: [//组件开始
                {
                    columnWidth: .2,
                    layout: 'form',
                    border: false,
                    items: [{
                        //为空
                        blankText: '组织名称不能为空',
                        emptyText: '',
                        editable: false,
                        triggerAction: 'all',
                        allowBlank: false,
                        //为空                        
                        xtype: 'textfield',
                        fieldLabel: '组织名称',
                        id: 'org_field_orgName_' + id,
                        name: 'org_field_orgName_' + id,
                        anchor: '90%'
                    }]
                } //组件结束
, //组件开始
                {
                    columnWidth: .2,
                    layout: 'form',
                    border: false,
                    items: [{
                        //为空
                        blankText: '上级部门不能为空',
                        emptyText: '',             
                        editable: false,
                        triggerAction: 'all',
                        allowBlank: false,
                        //为空
                         
                        xtype: 'textfield',
                        fieldLabel: '上级部门',
                        id: 'org_field_orgParent_' + id,
                         
                        anchor: '90%'
                    }]
                } //组件结束
, //按钮开始
                {
                    columnWidth: .2,
                    layout: 'form',
                    border: false,
                    items: [{
                     
                        xtype: 'button',
                        text: '选择上级部门',
                        scope: this,
                        handler: function(){  
                        }
                    }]
                } //按钮结束
, //组件开始
                {
                    columnWidth: .2,
                    layout: 'form',
                    border: false,
                    items: [{
                        //为空
                        blankText: '上级部门不能为空',
                        emptyText: '', 
                        editable: false,
                        triggerAction: 'all',
                        allowBlank: false,
                        //为空
                        //xtype: 'hidden',
                        xtype: 'textfield',
                        fieldLabel: '本部门ID',
                         
                        value: 'org_field_orgId_' + id,
                        anchor: '90%'
                    }]
                } //组件结束
, //按钮开始
                {
                    columnWidth: .2,
                    layout: 'form',
                    border: false,
                    items: [{
                     
                        xtype: 'button',
                        text: '删除',
                        value: id,
                        scope: this,
                        handler: function(obj){
                            var del_id = obj.value;
                            //var field_1 = Ext.getCmp('org_field_orgName_' + del_id);
                            var fieldSet_1 = Ext.getCmp('org_fieldSet_' + del_id);
                            //删除一行
                            simple.remove(fieldSet_1, true);
                             
                        }
                    }]
                } //按钮结束
]
             
                //column布局控件结束
            });
            //添加fieldSet
            simple.add(org_fieldSet);
            //重新剧新
            simple.doLayout();
        },
        iconCls: 'blist'
    });
  var first_Org_fieldSet = new Ext.Panel({
     
        //column布局控件开始
         
        id: 'org_fieldSet_' + id,
        layout: 'column',
        border: false,
        items: [//组件开始
        {
            columnWidth: .2,
            layout: 'form',
            border: false,
            items: [{
                //为空
                blankText: '组织名称不能为空',
                emptyText: '',
                 
                editable: false,
                triggerAction: 'all',
                allowBlank: false,
                //为空
                 
                xtype: 'textfield',
                fieldLabel: '组织名称',
                id: 'org_field_orgName_' + id,
                name: 'org_field_orgName_' + id,
                anchor: '90%'
             
            }]
        } //组件结束
, //组件开始
        {
            columnWidth: .2,
            layout: 'form',
            border: false,
            items: [{
                //为空
                blankText: '上级部门不能为空',
                emptyText: '',

                editable: false,
                triggerAction: 'all',
                allowBlank: false,
                //为空
                 
                xtype: 'textfield',
                fieldLabel: '上级部门',
                id: 'org_field_orgParent_' + id,
                 
                anchor: '90%'
            }]
        } //组件结束
, //按钮开始
        {
            columnWidth: .2,
            layout: 'form',
            border: false,
            items: [{
                xtype: 'button',
                text: '选择上级部门',
                scope: this,
                handler: function(){
                }
            }]
        } //按钮结束
, //组件开始
        {         
            columnWidth: .2,
            layout: 'form',
            border: false,
            items: [{
                //为空
                blankText: '上级部门不能为空',
                emptyText: '',

                editable: false,
                triggerAction: 'all',
                allowBlank: false,
                //为空
                //xtype: 'hidden',
                xtype: 'textfield',
                fieldLabel: '本部门ID',
                 
                value: 'org_field_orgId_' + id,
                anchor: '90%'             
            }]
        } //组件结束
, //按钮开始
        {
            columnWidth: .2,
            layout: 'form',
            border: false,
            items: [{
             
                xtype: 'button',
                text: '删除',
                value: id,
                scope: this,
                 
                handler: function(obj){
                    var del_id = obj.value;
                    //var field_1 = Ext.getCmp('org_field_orgName_' + del_id);
                    var fieldSet_1 = Ext.getCmp('org_fieldSet_' + del_id);

                    simple.remove(fieldSet_1, true);
                }
            }]
        } //按钮结束
]
     
        //column布局控件结束
    });
  //定义表单
    var simple = new Ext.FormPanel({
        labelAlign: 'left',
        title: '添加子部门',
        buttonAlign: 'right',
        bodyStyle: 'padding:5px',
        //width: 600,
        autoHeight: true,
        autoWidth: true,
        //
        frame: true,
        labelWidth: 80,
        // items: [ ]        ,
        buttons: [{
            text: '保存',
            type: 'submit',
            //定义表单提交事件
            handler: function(){
                if (simple.form.isValid()) {//验证合法后使用加载进度条
                    Ext.MessageBox.show({
                        title: '请稍等',
                        msg: '正在加载...',
                        progressText: '',
                        width: 300,
                        progress: true,
                        closable: false,
                        animEl: 'loding'
                    });
                    //控制进度速度
                    var f = function(v){
                        return function(){
                            var i = v / 11;
                            Ext.MessageBox.updateProgress(i, '');
                        };
                    };
                     
                    for (var i = 1; i < 13; i++) {
                        setTimeout(f(i), i * 150);
                    }
                     
                    //提交到服务器操作
                    simple.form.doAction('submit', {
                        url: newSaveOrgFrameUrl,//文件路径
                        method: 'post',//提交方法post或get
                        params: '',
                        //提交成功的回调函数
                        success: function(form, action){
                            if (action.result.msg == 'ok') {

                                Ext.MessageBox.show({
                                    title: '系统提示信息',
                                    msg: '添加成功!',
                                    buttons: Ext.MessageBox.OK,
                                    icon: Ext.MessageBox.INFO,
                                    fn: function(btn, text){

                                    }
                                });
                            }
                            else {
                                Ext.Msg.alert('添加错误', action.result.msg);
                            }
                        },
                        //提交失败的回调函数
                        failure: function(){
                            Ext.Msg.alert('错误', '服务器出现错误请稍后再试!');
                        }
                    });
                }
            }
        }, {
            text: '重置',
            handler: function(){
                simple.form.reset();
            }//重置表单
        }, {
            text: '取消',
            handler: function(){
                win.close();
            }//重置表单
        }]
    });
    //添加第一个fieldSet
    simple.add(first_Org_fieldSet);
   //菜单面板
    var panel = new Ext.Panel({
        bodyStyle: 'width:100%',
        autoWidth: true,
        autoHeight: true,
        //autoScroll: true,
        renderTo: Ext.getBody(),
        //
         
        title: '',
        bodyStyle: 'padding:10px;',
        tbar: [{
            xtype: 'tbseparator'
        }, newDept_action, { // <-- Add the action directly to a toolbar
            xtype: 'tbseparator'
        }],
        items: [simple]
     
    }); 
     
   // return panel;
     simple.render(document.body);
});

 

 

posted @ 2013-04-13 11:08  牧之丨  阅读(2591)  评论(0编辑  收藏  举报