欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#動態(tài)生成DropDownList執(zhí)行失敗原因分析

 更新時(shí)間:2015年03月27日 14:59:36   作者:小啊斌  
這篇文章主要介紹了C#動態(tài)生成DropDownList執(zhí)行失敗原因分析,以一個(gè)實(shí)例形式分析了C#動態(tài)生成DropDownList的相關(guān)注意要點(diǎn)與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例分析了C#動態(tài)生成DropDownList執(zhí)行失敗原因。分享給大家供大家參考。具體如下:

今天研究DDL控件的動態(tài)生成的時(shí)候遇到了點(diǎn)問題 ,當(dāng)我寫代碼的時(shí)候發(fā)現(xiàn)點(diǎn)擊button后 只能創(chuàng)建一個(gè)DDL控件,再點(diǎn)擊就沒有作用了,后來我在里面設(shè)置了變量,看看這個(gè)事件是不是沒有執(zhí)行,發(fā)現(xiàn)變量并沒有改變,剛剛有點(diǎn)疑惑不解,后來發(fā)現(xiàn)當(dāng)我觸發(fā)其它事件的時(shí)候,控件消失了!我想,button的click事件會回傳,而回傳后新建的控件就會消失,我才明白,原來每次都有創(chuàng)建新的控件,只是每次再次點(diǎn)擊button的時(shí)候回傳頁面,導(dǎo)致之前產(chǎn)生的控件消失了,而那唯一的一個(gè)控件是這次生成的,我又查詢了一下asp的生命周期 看來對于頁面的生命周期理解的不清楚會出好多問題。

簡單的說 頁面的生命周期分為下面幾個(gè)過程

1.初始化(Init)
2.控件狀態(tài)的裝載(LoadControlState)
3.視圖裝載(LoadViewState)
4.回傳的數(shù)據(jù)處理(LoadPostData)
5.頁面加載(OnLoad)
6.渲染(OnPreRender)
7.保存視圖狀態(tài)(SaveViewState)
8.保存控件狀態(tài)(SaveControlState)
9.呈現(xiàn)(Render)

這里當(dāng)我在新點(diǎn)擊button觸發(fā)新建DDL控件的事件的時(shí)候,這個(gè)事件執(zhí)行了,但是上一次創(chuàng)建的控件并沒有保存狀態(tài),所以出現(xiàn)了上面的問題
簡單研究了一下保存狀態(tài)的方法,就是把狀態(tài)保存到HiddenField中

<body>
 <form id="form1" runat="server">
 <div>
  <asp:HiddenField ID="hidden" runat="server" />
  <asp:Button ID="Btn" runat="server" Text="動態(tài)創(chuàng)建" 
   onclick="Btn_Click" />
  <asp:Button ID="GetValue" runat="server" Text="獲取選中的值" 
   onclick="GetValue_Click" />
  <asp:Label ID="lbl" runat="server" Text=""></asp:Label>
  <asp:Panel ID="PanelControl" runat="server">
  </asp:Panel>
 </div>
 </form>
</body>

下面是動態(tài)創(chuàng)建code  原理為點(diǎn)擊按鈕 給HiddenField賦值或者可以給ViewState賦值然后再創(chuàng)建控件,這樣再每次進(jìn)入頁面的時(shí)候,判斷iddenField或者Viewstate是否有值,有就顯示那個(gè)動態(tài)創(chuàng)建的控件,這樣就把狀態(tài)保存住了,當(dāng)你再點(diǎn)擊其他控件時(shí),既不會再消失了。

protected void Page_Load(object sender, EventArgs e)
if (!string.IsNullOrEmpty(Hidden.Value) && Hidden.Value=="flag")
{
   CreateDropDownList();
}
if(!isPostBack) //創(chuàng)建控件不能寫在這里,這個(gè)是判斷是否為回發(fā) 
{
}
}
protected void Btn_Click(object sender, EventArgs e)//創(chuàng)建控件
{
  Hidden.Value = "flag";//這里說明已經(jīng)創(chuàng)建過一個(gè)控件了
  CreateDropDownList();
}

接下來是創(chuàng)建ddl的基本代碼

private void CreateDropDownList()
{
  DropDownList ddl = new DropDownList();
  ddl.ID = "ddl";
  ddl.Items.Add(new ListItem("1", "1"));
  ddl.AutoPostBack = true;
  ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
  //給ddl添加事件
  PanelControl.Controls.Add(ddl); //放進(jìn)容器
}

下面為點(diǎn)擊控件  獲得動態(tài)創(chuàng)建的控件選中的值  道理也是回發(fā)

protected void GetValue_Click(object sender, EventArgs e)
{
  DropDownList ddl = PanelControl.FindControl("ddl") as DropDownList;
  if (ddl != null)
  {
   lbl.Text ="點(diǎn)擊按鈕得到的值為"+ddl.SelectedValue;
  }
}

動態(tài)創(chuàng)建的ddl的事件

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
  DropDownList ddl= sender as DropDownList;
  if (ddl != null)
  {
   lbl.Text ="通過自身回發(fā)事件得到的值為"+ddl.SelectedValue;
  }
}

希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • c#使用netmail方式發(fā)送郵件示例

    c#使用netmail方式發(fā)送郵件示例

    這篇文章主要介紹了c#使用netmail方式發(fā)送郵件的示例,大家參考使用吧
    2014-01-01
  • C#跨窗體操作(引用傳遞) 實(shí)例代碼

    C#跨窗體操作(引用傳遞) 實(shí)例代碼

    現(xiàn)在給大家介紹一種最簡單的跨窗體操作,WinForm的窗體是一個(gè)類,C#的類是引用類型,那么我們應(yīng)該可以將WinForm窗體類進(jìn)行傳遞,那不就可以進(jìn)行操作了么?
    2013-03-03
  • .net與javascript腳本的交互方法總結(jié)

    .net與javascript腳本的交互方法總結(jié)

    這篇文章主要介紹了.net與javascript腳本的交互方法,實(shí)例講述了.net訪問javascript的方法與javascript訪問.net的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C#給圖片加水印的簡單實(shí)現(xiàn)方法

    C#給圖片加水印的簡單實(shí)現(xiàn)方法

    這篇文章主要介紹了C#給圖片加水印的簡單實(shí)現(xiàn)方法,涉及C#操作圖片的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • c# EnumHelper枚舉常用操作類

    c# EnumHelper枚舉常用操作類

    在項(xiàng)目中需要把枚舉填充到下拉框中,所以使用統(tǒng)一的方法實(shí)現(xiàn),測試代碼如下,需要的朋友可以參考下
    2016-11-11
  • C#如何讓winform程序中的輸入文本框保留上次的輸入

    C#如何讓winform程序中的輸入文本框保留上次的輸入

    這篇文章主要介紹了C#如何讓winform程序中的輸入文本框保留上次的輸入問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C#中各種泛型集合的使用方法總結(jié)

    C#中各種泛型集合的使用方法總結(jié)

    這篇文章介紹了C#各種泛型集合的使用方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • 基于C#實(shí)現(xiàn)哈夫曼樹算法

    基于C#實(shí)現(xiàn)哈夫曼樹算法

    哈夫曼樹又稱最優(yōu)二叉樹,也就是帶權(quán)路徑最短的樹,對于哈夫曼樹,我想大家對它是非常的熟悉,使用下面我們就來學(xué)習(xí)一下如何通過C#實(shí)現(xiàn)哈夫曼樹算法吧
    2023-11-11
  • C#實(shí)現(xiàn)六大設(shè)計(jì)原則之單一職責(zé)原則

    C#實(shí)現(xiàn)六大設(shè)計(jì)原則之單一職責(zé)原則

    這篇文章介紹了C#實(shí)現(xiàn)六大設(shè)計(jì)原則之單一職責(zé)原則的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • C#加解密之DES算法的實(shí)現(xiàn)

    C#加解密之DES算法的實(shí)現(xiàn)

    DES算法為密碼體制中的對稱密碼體制,又被稱為美國數(shù)據(jù)加密標(biāo)準(zhǔn)。本文將用C#語言實(shí)現(xiàn)DES算法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08

最新評論