程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#靜態生成DropDownList履行掉敗緣由剖析

C#靜態生成DropDownList履行掉敗緣由剖析

編輯:C#入門知識

C#靜態生成DropDownList履行掉敗緣由剖析。本站提示廣大學習愛好者:(C#靜態生成DropDownList履行掉敗緣由剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#靜態生成DropDownList履行掉敗緣由剖析正文


本文實例剖析了C#靜態生成DropDownList履行掉敗緣由。分享給年夜家供年夜家參考。詳細以下:

明天研討DDL控件的靜態生成的時刻碰到了點成績 ,當我寫代碼的時刻發明點擊button後 只能創立一個DDL控件,再點擊就沒有感化了,後來我在外面設置了變量,看看這個事宜是否是沒有履行,發明變量並沒有轉變,方才有點困惑不解,後來發明當我觸發其它事宜的時刻,控件消逝了!我想,button的click事宜會回傳,而回傳後新建的控件就會消逝,我才明確,本來每次都有創立新的控件,只是每次再次點擊button的時刻回傳頁面,招致之前發生的控件消逝了,而那獨一的一個控件是此次生成的,我又查詢了一下asp的性命周期 看來關於頁面的性命周期懂得的不清晰會出很多多少成績。

簡略的說 頁面的性命周期分為上面幾個進程

1.初始化(Init)
2.控件狀況的裝載(LoadControlState)
3.視圖裝載(LoadViewState)
4.回傳的數據處置(LoadPostData)
5.頁面加載(OnLoad)
6.襯著(OnPreRender)
7.保留視圖狀況(SaveViewState)
8.保留控件狀況(SaveControlState)
9.出現(Render)

這裡當我在新點擊button觸發新建DDL控件的事宜的時刻,這個事宜履行了,然則上一次創立的控件並沒有保留狀況,所以湧現了下面的成績
簡略研討了一下保留狀況的辦法,就是把狀況保留到HiddenField中

<body>
 <form id="form1" runat="server">
 <div>
  <asp:HiddenField ID="hidden" runat="server" />
  <asp:Button ID="Btn" runat="server" Text="靜態創立" 
   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>

上面是靜態創立code  道理為點擊按鈕 給HiddenField賦值或許可以給ViewState賦值然後再創立控件,如許再每次進入頁面的時刻,斷定iddenField或許Viewstate能否有值,有就顯示誰人靜態創立的控件,如許就把狀況保留住了,當你再點擊其他控件時,既不會再消逝了。

protected void Page_Load(object sender, EventArgs e)
if (!string.IsNullOrEmpty(Hidden.Value) && Hidden.Value=="flag")
{
   CreateDropDownList();
}
if(!isPostBack) //創立控件不克不及寫在這裡,這個是斷定能否為回發 
{
}
}
protected void Btn_Click(object sender, EventArgs e)//創立控件
{
  Hidden.Value = "flag";//這裡解釋曾經創立過一個控件了
  CreateDropDownList();
}

接上去是創立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); //放進容器
}

上面為點擊控件  取得靜態創立的控件選中的值  事理也是回發

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

靜態創立的ddl的事宜

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
  DropDownList ddl= sender as DropDownList;
  if (ddl != null)
  {
   lbl.Text ="經由過程本身回發事宜獲得的值為"+ddl.SelectedValue;
  }
}

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved