C#中DropDownList动态生成的方法

 更新时间:2015年03月27日 14:47:20   作者:小啊斌  
这篇文章主要介绍了C#中DropDownList动态生成的方法,实例分析了C#中DropDownList的使用技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了C#中DropDownList动态生成的方法。分享给大家供大家参考。具体分析如下:

今天学习了DropDownList的动态生成 以及asp.net的生命周期,还有ViewState,因为项目需要根据需求动态生成条件 所以研究了一部分代码来完成这些工作,好了话不多说了,来看代码

首先是网页的代码:

<span style="font-size:18px;"><body>
  <form id="form1" runat="server">
  <div>
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
 //placeholder控件相当于一个容器,用于存放其他控件
    <br />
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button"/></div>
  </form>
</body></span>

下面是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("<br />"); 
    if (category2.Length > 0)
      category2 = category2.Remove(0, 1);
    Response.Write(category2);
  }
}

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • 基于C#调用c++Dll结构体数组指针的问题详解

    基于C#调用c++Dll结构体数组指针的问题详解

    下面小编就为大家分享一篇基于C#调用c++Dll结构体数组指针的问题详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • C#获取U盘序列号的方法

    C#获取U盘序列号的方法

    这篇文章主要介绍了C#获取U盘序列号的方法,涉及C#针对硬件底层信息操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • c# 用Base64实现文件上传

    c# 用Base64实现文件上传

    这篇文章主要介绍了c# 用Base64实现文件上传的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • 深入分析c# 封装和访问修饰符

    深入分析c# 封装和访问修饰符

    这篇文章主要介绍了c# 封装和访问修饰符的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • VB.NET中TextBox的智能感知应用实例

    VB.NET中TextBox的智能感知应用实例

    这篇文章主要介绍了VB.NET中TextBox的智能感知应用实例,非常实用的功能,需要的朋友可以参考下
    2014-08-08
  • C#实现对Json字符串处理实例

    C#实现对Json字符串处理实例

    这篇文章主要介绍了C#实现对Json字符串处理,通过一个json实例分析了C#进行JSON操作的方法,需要的朋友可以参考下
    2014-09-09
  • C#中backgroundWorker类的用法详解

    C#中backgroundWorker类的用法详解

    这篇文章主要介绍了C#使用backgroundWorker实现多线程的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • wpf将表中数据显示到datagrid示例

    wpf将表中数据显示到datagrid示例

    这篇文章主要介绍了wpf将表中数据显示到datagrid示例,需要的朋友可以参考下
    2014-02-02
  • C#中new操作符的工作机制

    C#中new操作符的工作机制

    这篇文章介绍了C#中new操作符的工作机制,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • c# 使用线程对串口serialPort进行收发数据(四种)

    c# 使用线程对串口serialPort进行收发数据(四种)

    本文主要介绍了c# 使用线程对串口serialPort进行收发数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论