Ext框架實現頁面渲染

 這裏是兩年前寫的一個方法,想想好久都不用這東西了,今天把他分享出來,以供前端程序員參考。

這個方法的用途是將頁面中的組件渲染成Ext風格,下面貼代碼吧

  1. Ext.onReady(function() { 
  2.     var forms = Ext.query('form'); 
  3.     //    alert(forms.length); 
  4.     for(var i=0;i<forms.length;i++){ 
  5.         var formname = Ext.query('form')[i].id; 
  6.         // 定義表單 
  7.         var userForm = new Ext.form.BasicForm(formname); 
  8.  
  9.         // 渲染輸入框 
  10.         try
  11.             var text = Ext.query("*[type=text]"); 
  12.             for(var i=0;i<text.length;i++){ 
  13.                 if(text[i].id.indexOf('time')>0){ 
  14.                     break
  15.                 }else
  16.                     if((typeof(text[i].width)=='undefined')&&(text[i].style.width.length==0)){ 
  17.                         var tf1 = new Ext.form.TextField({ 
  18.                             applyTo : text[i], 
  19.                             width:100, 
  20.                             allowBlank : false 
  21.                         }); 
  22.                     }else
  23.                         var tf2 = new Ext.form.TextField({ 
  24.                             applyTo : text[i], 
  25.                             allowBlank : false 
  26.                         }); 
  27.                     } 
  28.                    
  29.                 } 
  30.                  
  31.             } 
  32.         }catch(e){ 
  33.             Ext.MessageBox.alert("錯誤""輸入框渲染錯誤"); 
  34.         } 
  35.  
  36.         // 渲染下拉框 
  37.         try
  38.             var select = Ext.query('select'); 
  39.             for(var i=0;i<select.length;i++){ 
  40.                 if(typeof(select[i].width)=='undefined'){ 
  41.                     var cb1 = new Ext.form.ComboBox({ 
  42.                         emptyText : '請選擇'
  43.                         triggerAction:'all'
  44.                         editable:false
  45.                         width:90, 
  46.                         transform : select[i], 
  47.                         listeners:{ 
  48.                             select:function(){ 
  49.                                 try
  50.                                     var localName = this.hiddenField.id;//select[i].localName;alert(localName); 
  51.                                     var el = document.getElementsByName(localName+"0000")[0]; 
  52.                                     if((this.value).indexOf(":")>0){ 
  53.                                          
  54.                                         if(typeof(el)=='undefined'){ 
  55.                                             Ext.MessageBox.alert("異常""子文本框沒有定義-異常代碼:01"); 
  56.                                         }else
  57.                                             el.style.display='inline'
  58.                                         } 
  59.                                     }else
  60.                                         if(typeof(el)=='undefined'){ 
  61.                                         //                                            Ext.MessageBox.alert("異常", "子文本框沒有定義-2"); 
  62.                                         }else
  63.                                             el.style.display='none'
  64.                                         } 
  65.                                     } 
  66.                                      
  67.                                 }catch(e){ 
  68.                                     Ext.MessageBox.alert("異常""子文本框渲染異常"); 
  69.                                 } 
  70.                             } 
  71.                         } 
  72.                     }); 
  73.                 }else
  74.                     var cb2 = new Ext.form.ComboBox({ 
  75.                         emptyText : '請選擇'
  76.                         triggerAction:'all'
  77.                         editable:false
  78.                         transform : select[i], 
  79.                         listeners:{ 
  80.                             select:function(){ 
  81.                                 try
  82.                                     var localName = this.hiddenField.id;//select[i].localName;alert(localName); 
  83.                                     var el = document.getElementsByName(localName+"0000")[0]; 
  84.                                     if((this.value).indexOf(":")>0){ 
  85.                                         el.style.display='inline'
  86.                                     }else
  87.                                         el.style.display='none'
  88.                                     } 
  89.                                 }catch(e){ 
  90.  
  91.                                 } 
  92.                             } 
  93.                         } 
  94.                     }); 
  95.                 } 
  96.             } 
  97.              
  98.         }catch(e){ 
  99.             Ext.MessageBox.alert("錯誤""下拉框渲染錯誤"); 
  100.         } 
  101.  
  102.         // 渲染日曆框 
  103.         try
  104.             var time = Ext.query("*[id^=time]"); 
  105.             for(var i=0;i<time.length;i++){ 
  106.                 if((typeof(time[i].width)=='undefined')&&(time[i].style.width.length==0)){ 
  107.                     var df1 = new Ext.form.DateField({ 
  108.                         applyTo : time[i], 
  109.                         width:90, 
  110.                         value:new Date(), 
  111.                         timePicker : true 
  112.                     }); 
  113.                 }else
  114.                     var df2 = new Ext.form.DateField({ 
  115.                         applyTo : time[i], 
  116.                         value:new Date(), 
  117.                         timePicker : true 
  118.                     }); 
  119.                 } 
  120.                  
  121.             } 
  122.         }catch(e){ 
  123.             Ext.MessageBox.alert("錯誤""時間框渲染錯誤"); 
  124.         } 
  125.  
  126.  
  127.         // 渲染文本域 
  128.         try
  129.             var textarea = Ext.query('textarea'); 
  130.             for(var i=0;i<textarea.length;i++){ 
  131.                 var ta = new Ext.form.TextArea({ 
  132.                     applyTo : textarea[i] 
  133.                 }); 
  134.             } 
  135.         }catch(e){ 
  136.             Ext.MessageBox.alert("錯誤""文本域渲染錯誤"); 
  137.         } 
  138.  
  139.         //渲染按鈕 
  140.         try
  141.             var btn = new Ext.Button({ 
  142.                 applyTo:'btn'
  143.                 text: '提交' 
  144.             }); 
  145.         }catch(e){ 
  146.         //            Ext.MessageBox.alert("錯誤", "按鈕渲染錯誤"); 
  147.         } 
  148.         //添加 
  149.         try
  150.             userForm.add(tf1); 
  151.         }catch(e){ 
  152.         } 
  153.         try
  154.             userForm.add(tf2); 
  155.         }catch(e){ 
  156.         } 
  157.         try
  158.             userForm.add(df1); 
  159.         }catch(e){ 
  160.         } 
  161.         try
  162.             userForm.add(df2); 
  163.         }catch(e){ 
  164.         } 
  165.         try
  166.             userForm.add(cb1); 
  167.         }catch(e){ 
  168.         } 
  169.         try
  170.             userForm.add(cb2); 
  171.         }catch(e){ 
  172.         } 
  173.     } 
  174.  
  175. }); 

這裏就不做優化了,只當是提供一種思路吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章