C#におけるDropDownListの動的生成方法

3406 ワード

この例では,C#におけるDropDownListの動的生成方法について述べる.皆さんの参考にしてください.具体的な分析は以下の通りである.
今日はDropDownListの動的生成とaspについて学びました.Netのライフサイクル、そしてView State、プロジェクトは需要に応じて動的に条件を生成する必要があるため、一部のコードを研究してこれらの仕事を完成して、よし話は多くなくて、コードを見てみましょう
まず、Webページのコードです.


  
//placeholder ,

次はc#プログラムです

public partial class _Default : System.Web.UI.Page
{
  private CategoryBLL _categoryBLL = new CategoryBLL();
  private Category _category = new Category();
  private void Page_Init(object sender, System.EventArgs e)
  //     asp     
  {
    BindDrpClass();
  }
  protected void Page_Load(object sender, EventArgs e)
  {
    string str = "8/14/19/25";
 //     
    string[] arr = str.Split('/');
    if (arr.Length == PlaceHolder1.Controls.Count)
 //           
    {
      for (int i = 0; i < PlaceHolder1.Controls.Count; i++)
      {
        if (PlaceHolder1.Controls[i] is DropDownList)
        {
          ((DropDownList)PlaceHolder1.Controls[i]).SelectedValue = arr[i];
        }
      }
    }
  }
  private void BindDrpClass()
  {
    DataTable dt = _categoryBLL.GetCategory();
    DataRow[] drs = dt.Select("pid=0");
    foreach (DataRow dr in drs)
    {
      string id = dr["id"].ToString();
      string name = dr["name"].ToString();
      DropDownList ddl = new DropDownList();
      //       
      ddl.Items.Clear();
      ddl.ID = "ddl" + id;
      ddl.Items.Add(new ListItem("-" + name + "-", id));
      PlaceHolder1.Controls.Add(ddl);
      int sonparentid = int.Parse(id);
      BindDrpNode(sonparentid, dt, ddl);
    }
  }
  private void BindDrpNode(int parentid, DataTable dt, DropDownList ddl)
  {
    DataRow[] drs = dt.Select("pid= " + parentid);
    foreach (DataRow dr in drs)
    {
      string id = dr["id"].ToString();
      string name = dr["name"].ToString();
      ddl.Items.Add(new ListItem(name, id));
      PlaceHolder1.Controls.Add(ddl);
    }
  }
  protected void Button1_Click(object sender, EventArgs e)
  {
    string category = "";
    string category2 = "";
    foreach (Control childControl in PlaceHolder1.Controls)
    {
      if (childControl is DropDownList) 
      {
        category += "/" + ((DropDownList)childControl).SelectedItem.Text;
        category2 += "/" + ((DropDownList)childControl).SelectedValue;
      }
    }
    if (category.Length > 0)
      category = category.Remove(0, 1);
    Response.Write(category);
    Response.Write("
"); if (category2.Length > 0) category2 = category2.Remove(0, 1); Response.Write(category2); } }

本稿で述べたことが皆さんのC#プログラム設計に役立つことを願っています.