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#程序设计有所帮助。

(0)

相关推荐

  • C#动态生成PictureBox并指定图片的方法

    本文实例讲述了C#动态生成PictureBox并指定图片的方法.分享给大家供大家参考.具体如下: int Num = 0; PictureBox[] pb; Num = 6; pb = new PictureBox[Num]; for (int i = 1; i < Num; i++) { pb[i] = new System.Windows.Forms.PictureBox(); pb[i].BorderStyle = BorderStyle.FixedSingle; pb[i].Locati

  • 通过C#动态生成图书信息XML文件

    通过C#动态生成图书信息XML文件(Books.xml),文件如下: 复制代码 代码如下: <?xml version="1.0" encoding="iso-8859-1"?> <bookstore> <book id="1" category="CHILDREN"> <title>Harry Potter</title> <author>J K. Ro

  • C#获取动态生成的CheckBox值

    给你推荐两种方法,一种是向服务器容器控件里添加子控件(即向runat=server的控件的Controls里添加控件),第二种是就是你的这种拼接HTML的方法不过这种方法必须设置控件的name属性,然后在Request.Form["控件的name"]里获得控件的值,推荐使用第一种方法,更直观一些,第二种无法记录提交以后的状态,代码如下 第一种 后台 using System.Web.UI.HtmlControls; protected void Page_Load(object sen

  • C#中实现伪静态页面两种方式介绍

    第一种是在页面global.asax中,相关代码如下: 复制代码 代码如下: void Application_BeginRequest(object sender, EventArgs e) { HttpContext context = ((HttpApplication)sender).Context; string oldurl = context.Request.Path.ToLower(); if ( ( oldurl.IndexOf("-") > 0 &&a

  • C#实现动态生成静态页面的类详解

    本文实例讲述了C#实现动态生成静态页面的类.分享给大家供大家参考,具体如下: 动态生成静态页面有许多好处,比如生成html网页有利于被搜索引擎收录.同时,由于减少了数据访问,减轻对数据库访问的压力,提高了网页打开速度. 基本思路: 使用一个字符串作为页面模板,再页面中包含用若干标志(用 {标志名} 表示),生成页面时,将标志替换为对应的值. 实现方法: 在初始化TextTemplate实例时读入模板,以标志为分割点将模板分割成几部分,生成页面时只需简单的将模板内容和标志的值连接起来.例如: 假如

  • C#动态生成按钮及定义按钮事件的方法

    本文实例讲述了C#动态生成按钮及定义按钮事件的方法.分享给大家供大家参考.具体实现方法如下: 1.后台生成input的button按钮 复制代码 代码如下: HtmlGenericControl control = new HtmlGenericControl("input"); control.Attributes.Add("type", "button"); control.Attributes.Add("onclick"

  • C#实现动态生成表格的方法

    本文以实例形式展现了C#实现动态生成表格的方法,分享给大家供大家参考之用.具体方法如下: public string CreateTable() { StringBuilder sb = new StringBuilder(""); int row = 1;//行数 if (true )//是否有数据 { int nRowCount = 10;//所有条数 row = (int)Math.Ceiling(nRowCount / 5.0);//5.0表示每行有多少条数据 int colN

  • c#使用Dataset读取XML文件动态生成菜单的方法

    本文实例讲述了c#使用Dataset读取XML文件动态生成菜单的方法.分享给大家供大家参考.具体实现方法如下: Step 1:Form1 上添加一个ToolStripContainer控件 Step2:实现代码 private void Form2_Load(object sender, EventArgs e) { CMenuEx menu = new CMenuEx(); string sPath = "D://Menu.xml";//xml的内容 if (menu.FileExi

  • C#中DropDownList动态生成的方法

    本文实例讲述了C#中DropDownList动态生成的方法.分享给大家供大家参考.具体分析如下: 今天学习了DropDownList的动态生成 以及asp.net的生命周期,还有ViewState,因为项目需要根据需求动态生成条件 所以研究了一部分代码来完成这些工作,好了话不多说了,来看代码 首先是网页的代码: <span style="font-size:18px;"><body> <form id="form1" runat=&qu

  • jQuery EasyUI中DataGird动态生成列的方法

    EasyUI中使用DataGird显示数据列表中,有时需要根据需要显示不同的列,例如,在权限管理中,不同的用户登录后只能查看自己权限范围内的列表字段,这就需要DataGird动态组合列,下面介绍EasyUI中DataGird动态生成列的方法. DataGird动态生成列,实际上就是控制DataGird的 columns 属性值,下面通过ajax异步调用后台columns的数据,进行绑定. <table id="dg"></table> <script>

  • vue中实现动态生成二维码的方法

    最近项目中有个裂变分享的需求,需要在页面中根据分享人的身份动态生成二维码图片放置在页面中,所以研究了一下这个功能的实现,同时把实现过程记录如下: 1.引入二维码生成模块 npm install qrcodejs2 --save 注意:此处安装qrcodejs2,安装依赖后可在main方法中进行全局引用设置,也可单独某个页面中进行引用设置. 2.引入使用 import QRCode from 'qrcodejs2'; 备注:在main中设置全局可使用 Vue.prototype.qrCode 3.

  • vue中v-model动态生成的实例详解

    vue中v-model动态生成的实例详解 前言: 最近在做公司的项目中,有这么一个需求,每一行有一个input和一个select,其中行数是根据服务器返回的json数据动态变化的.那么问题来了,我们要怎样动态生成v-model? 现在项目做完了就整理了一下,直接贴代码了. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <

  • Android实现GridView中ImageView动态变换的方法

    本文实例讲述了Android实现GridView中ImageView动态变换的方法.分享给大家供大家参考.具体如下: 使用YY影音的时候,发现点击GridView的某一个Item,Item里面的图标会在按下的时候发生变换,变成另外一个图片. 自己写了一个类似的demo,具体步骤如下: 1.创建一个包含Grid的Acitity 2.创建item.xml 里面包含一个imageview和一个textview 3.自定义一个adapter,从baseadapter继承 4.在getView中为每个im

  • Bootstrap模态对话框中显示动态内容的方法

    首先引入bootstrap的js和css,在引入对应版本的jquery: 添加按钮,点击弹出模态窗体: <button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#modal" href="/Home/Test" rel="external nofollow" ></button> 创建模态对话框:

  • Flex中如何动态生成DataGrid以及动态生成表头

    在Flex中动态生成表格,并且表格的表头也是动态生成 1.源码 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initHandler()" width

  • javascript中兼容主流浏览器的动态生成iframe方法

    以下代码在IE8下运行通过,在IE9中出错: 复制代码 代码如下: document.createElement('<iframe id="yige-org-iframe" src="yige.org.logo.gif" style="position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;"></iframe>'); 错误提示:excep

  • 浅谈iOS中三种生成随机数方法

    ios 有如下三种随机数方法: //第一种 srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % 5; //第二种 srandom(time(0)); int i = random() % 5; //第三种 int i = arc4random() % 5 ; 注: ① rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样. ② arc4random() 是一个

  • AngularJS实现给动态生成的元素绑定事件的方法

    本文实例讲述了AngularJS实现给动态生成的元素绑定事件的方法.分享给大家供大家参考,具体如下: 1 . 我们知道在jQuery中,动态生成一个元素,如果要在动态生成元素的同时,动态绑定事件,可以通过live/on方法(在jquery3.0中已经废除了bind方法). 2 . 在AngularJS中,操作DOM一般在指令中完成,事件监听机制是在对于已经静态生成的dom绑定事件,而如果在指令中动态生成了DOM节点,动态生成的节点不会被JS事件监听. 举例来说: angular.module('

随机推荐