久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

extaspnet下的一些疑難雜癥解決方案匯總

 絢爺好人圖書館 2014-06-24

最近一個web項目用到了extaspnet

這個開源的框架寫的不錯,,很有潛力,,但資料相對匱乏

所以在這里我把在QQ交流群里解答的一些網(wǎng)友問題也羅列在這邊,方便大家查閱

我的開發(fā)環(huán)境:WIN7+VS2008+IE 8.0+MSSQL2000,其它瀏覽器主要測試Firefox和Chrome

 


 1.如何在后臺動態(tài)修改window的寬度,高度?

答:基于extjs的頁面AJAX創(chuàng)建機(jī)制,,后臺改一些控件的屬性樣式 不可透過傳統(tǒng)的方法如:window1.width=600;要透過CSS

 

前臺aspx(初始寬度設(shè)為600):    

  1. <ext:Window ID="Window1" runat="server" Height="350px" IsModal="true" Popup="false"  
  2.         Title="Window" CssStyle="width:600" IFrameUrl="test.aspx" EnableIFrame="true">  
  3. </ext:Window>  

 

 

后臺(c#):

  1. protected void Button1_Click(object sender, EventArgs e)  
  2.         {            ExtAspNet.PageContext.RegisterStartupScript("Ext.getDom(" + Window1.ClientID + ").style.width=900;");  
  3.         }  

寫法適用于extaspnet其它容器控件,,比如說panel,form...

 


 

2.后臺按鈕觸發(fā)時報JS錯的怪異問題?

描述起來有點(diǎn)麻煩,頁面有Toolbar,TabStrip,含2個tab,其中tab2有g(shù)rid,其中一列為

<ext:CheckBoxField DataField="Selected" HeaderText="選擇" RenderAsStaticField="false" />

當(dāng)頁面加載后直接觸發(fā)toolbar按鈕事件就會報一個JS的錯誤,但如果先手動切換tab2后,,再觸發(fā)就無礙,,坑爹吧

 

答:grid的這列如果RenderAsStaticField="true"就不會報錯,從JS報錯分析,,是grid上面的checkbox列未初始化(tab2未激活),,既然通過手工切換tab(激活tab2)就可避免,我們用JS來實現(xiàn)即可

  1.     <mce:script type="text/javascript"><!--  
  2.         function onReady() {                          
  3.            var mainTabStrip = Ext.getCmp('<%= TabStrip1.ClientID %>');  
  4.            var tabID1 = '<%= Tab1.ClientID %>';  
  5.            var tabID2 = '<%= Tab2.ClientID %>';  
  6.            mainTabStrip.setActiveTab(tabID2);  
  7.            mainTabStrip.setActiveTab(tabID1);  
  8.         }  
  9.       
  10. // --></mce:script>  

 


 

3.tree放到了regionpanel中,,就無法觸發(fā)nodecommand的bug?

答:看上去又是一個控件bug,,如何解決,調(diào)試控件源碼,,有耐心當(dāng)然可以,,沒耐心咋辦,換個思路

   

  1. protected void Page_Load(object sender, EventArgs e)  
  2.         {  
  3.             if (!IsPostBack)  
  4.             {  
  5.             }  
  6.             else  
  7.             {  
  8.                 if (Request.Form["__EVENTARGUMENT"] == "Command$n1$$")  
  9.                 {  
  10.                     ExtAspNet.Alert.Show("n1很蛋疼");  
  11.                 }  
  12.                 if (Request.Form["__EVENTARGUMENT"] == "Command$n2$$")  
  13.                 {  
  14.                     ExtAspNet.Alert.Show("n2很蛋疼");  
  15.                 }  
  16.                 if (Request.Form["__EVENTARGUMENT"] == "Command$n3$$")  
  17.                 {  
  18.                     ExtAspNet.Alert.Show("n3很蛋疼");  
  19.                 }  
  20.             }  
  21.         }  

 

   n1,n2,n3是tree中節(jié)點(diǎn)的nodeid,雖然觸發(fā)不了節(jié)點(diǎn)click事件,,但是設(shè)置了節(jié)點(diǎn)的enabledpostback后,,點(diǎn)擊節(jié)點(diǎn)還是可以觸發(fā)postback事件的,把邏輯寫在Page_Load的postback事件里面,,并且通過事件名稱判斷 "Command$節(jié)點(diǎn)NODEID$$",, 就可以了

注意,這種通過postback來寫后臺邏輯的方法,,很實用,,特別是在頁面之間傳值啊,父子窗體聯(lián)動刷新關(guān)閉啊等等,。

 


 

4.extaspnet中動態(tài)控件的寫法

答:寫法和asp.net傳統(tǒng)沒啥區(qū)別,,但有一些基于AJAX要注意的地方,那就是創(chuàng)建控件的時機(jī),,請看代碼

 

前臺:一個空的form

  1. <ext:Form ID="Form2" runat="server" BodyPadding="5px" EnableBackgroundColor="true"  
  2.     Title="Form" OnInit="Form2_Init" >  
  3.     <Rows>  
  4.     </Rows>  
  5. </ext:Form>   

 

后臺:

  1. protected void Form2_Init(object sender, EventArgs e)  
  2.  {  
  3.      SqlConnection myConnect = new SqlConnection(ConfigurationManager.ConnectionStrings["Conn"].ToString());  
  4.      SqlDataAdapter custDA = new SqlDataAdapter("select * from [user]", myConnect);  
  5.      myConnect.Open();  
  6.      DataSet custDS = new DataSet();  
  7.      custDA.Fill(custDS, "cc");  
  8.      ExtAspNet.DropDownList c1 = new ExtAspNet.DropDownList();  
  9.      c1.ShowLabel = false;  
  10.      c1.DataTextField="username";  
  11.      c1.DataValueField = "userid";  
  12.      c1.DataSource = custDS;  
  13.      c1.DataBind();  
  14.      ExtAspNet.FormRow fr = new ExtAspNet.FormRow();  
  15.      fr.Items.Add(c1);  
  16.      ExtAspNet.Label l = new ExtAspNet.Label();  
  17.      l.Label = "";  
  18.      l.Text = "";  
  19.      fr.Items.Add(l);  
  20.      fr.ColumnWidths = "10% 90%";  
  21.      Form2.Rows.Add(fr)  

這段代碼是在form2中創(chuàng)建一行,,并在里面創(chuàng)建一個下拉框,,下拉框內(nèi)容取自數(shù)據(jù)庫一個表[user]

取值:

  1. protected void Button1_Click(object sender, EventArgs e)  
  2. {  
  3.     foreach (ExtAspNet.FormRow fr in Form2.Rows)  
  4.     {  
  5.         foreach (object c in fr.Controls)  
  6.         {  
  7.             if (c.GetType().ToString() == "ExtAspNet.DropDownList")  
  8.             {  
  9.                 ExtAspNet.DropDownList c1 = (ExtAspNet.DropDownList)c;  
  10.                 ExtAspNet.Alert.Show(c1.SelectedValue);  
  11.             }  
  12.         }  
  13.     }  
  14. }  

 

代碼是傳統(tǒng)寫法,,但注意觸發(fā)的事件,,extaspnet的動態(tài)控件,只可以寫在page或者容器控件的Init事件中

問題來了,,一般設(shè)計中,,要用到動態(tài)控件,一般都是由用戶選擇了某個項目,,然后動態(tài)創(chuàng)建對應(yīng)的控件或者頁面

比如想做一個萬能查詢功能,,點(diǎn)擊增加按鈕,新增一行查詢條件...,,要想在extaspnet中實現(xiàn),,怎么做?

我想可以通過iframe(window)的方式來實現(xiàn),。有時間我再寫個例子,。

 


 

5 .extaspnet中上傳控件的寫法

 

作者沒有編寫上傳控件,但有承諾會給一套FLASH的上傳方案,,嵌入在里面,,實現(xiàn)大文件的上傳,這個網(wǎng)上有源碼

這里要提醒的是,,就算你在ContentPanel控件里面加上<asp:FileUpload />,,你也無法實現(xiàn)上傳,因為extjs的局部刷新機(jī)制,,你根本取不到上傳的文件名,,我的建議是,你想用上傳,,這個頁面就不要用到extaspnet(或者PageManager 的 EnableAjax = "false" ),。

 

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多