也谈谈动态绑定dropdownlist(2)

转载 2004年09月18日 14:55:00

也谈谈动态绑定dropdownlist2<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

       在我的《也谈谈动态绑定dropdownlist1》的文章里,(http://blog.csdn.net/zsxfbj/archive/<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2004/07/08/36659.aspx)提到了的是利用dataset作为数据源来实现datasetItem绑定。但是DataSet包含的内容和结构太多,我们只要求的是快速的绑定DropDownListItem,而不对数据做任何的操作。所以说用DataSet做数据源的话,是不是有些大材小用的感觉?

       而且在用DataSet做为数据源的时候,我们要指定:

DropDownList1.DataTextField = "ItemName"; //dropdownlistText的字段

DropDownList1.DataValueField = "id";//dropdownlistValue的字段

这样的话,我们还要知道表的字段,这个方面不是很好。如果我们想在绑定一个叫Text为:All ItemValue0Item,用DataSet作为数据源时绑定会出现问题,我在绑定DropDownList1时,先指定上面我要加的Item项:

     DropDownList1.Items.Add( new ListItem( "ALL Item", "0" ) );//这里为新加代码

    DropDownList1.DataSource = dataSet.Tables["Table1"].DefaultView;

    //指定DropDownList使用的表里的那些字段

    DropDownList1.DataTextField = "ItemName"; //dropdownlistText的字段

    DropDownList1.DataValueField = "id";//dropdownlistValue的字段

    DropDownList1.DataBind();

编译后生成的页面的代码:

<select name=”DropDownList1” id=”DropDownList1”>

<option value=”5”>Item5</option>

<option value=”4”>Item4</option>

<option value=”3”>Item3</option>

<option value=”2”>Item2</option>

<option value=”1”>Item1</option>

</select>

新加的All Item这项根本没有。如果发在后面呢?

     //指定DropDownList使用的数据源

    //DropDownList1.Items.Add( new ListItem( "ALL Item", "0" ) );//新加的代码

    DropDownList1.DataSource = dataSet.Tables["Table1"].DefaultView;

    //指定DropDownList使用的表里的那些字段

    DropDownList1.DataTextField = "ItemName"; //dropdownlistText的字段

    DropDownList1.DataValueField = "id";//dropdownlistValue的字段

    DropDownList1.DataBind();

    DropDownList1.Items.Add( new ListItem( "ALL Item", "0" ) );//新加的代码

编译后的页面的代码为:

<select name="DropDownList1" id="DropDownList1">

     <option value="5">Item5</option>

     <option value="4">Item4</option>

     <option value="3">Item3</option>

     <option value="2">Item2</option>

     <option value="1">Item1</option>

     <option value="0">ALL Item</option>

</select>

好像<option value="0">ALL Item</option>这项有了,但是是放在了最下面,这又不符合我们的一般的习惯。那么怎么办呢?

     既然,DropDownList1.Items可以Add一个new ListItem,而且DataSet做数据源太浪费,我们又不对数据做任何修改,那么我们只是Read一下就可以了。下面就看看这段代码:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using System.Configuration;

 

namespace BindDropDownList

{

    /// <summary>

    /// Example2 的摘要说明。

    /// </summary>

    public class Example2 : System.Web.UI.Page

    {

      protected System.Web.UI.WebControls.DropDownList DropDownList1;

      protected System.Web.UI.WebControls.Button Button1;

  

        private void Page_Load(object sender, System.EventArgs e)

        {

            // 在此处放置用户代码以初始化页面

        }

 

        #region Web Form Designer generated code

        override protected void OnInit(EventArgs e)

        {

            //

            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。

            //

            InitializeComponent();

            base.OnInit(e);

        }

       

        /// <summary>

        /// 设计器支持所需的方法 - 不要使用代码编辑器修改

        /// 此方法的内容。

        /// </summary>

        private void InitializeComponent()

        {   

         this.Button1.Click += new System.EventHandler(this.Button1_Click);

         this.Load += new System.EventHandler(this.Page_Load);

 

      }

        #endregion

 

      private void Button1_Click(object sender, System.EventArgs e)

      {

         //取得Web.config里的数据库连接字串

         string ConnString = ConfigurationSettings.AppSettings["ConnectionString"];

         //创建一个SqlConnection

         SqlConnectionConn = new SqlConnection( ConnString );

        

         string SQL_Select = "select id, ItemName from DDLItem order by id desc";

         //创建一个SqlCommand

         SqlCommand myCommand = new SqlCommand( SQL_Select, Conn );

         //读取数据记录并绑定

         myCommand.Connection.Open();

         //使用DataReader读取速度更快

         SqlDataReader myReader = myCommand.ExecuteReader();

         while ( myReader.Read() )

         {

            DropDownList1.Items.Add( new ListItem( myReader["ItemName"].ToString(),myReader["id"].ToString() ) );//增加Item

            //或者这样也能绑定,

            //DropDownList1.Items.Add( new ListItem( myReader[1].ToString(),myReader[0].ToString() ) );//增加Item

            //都是要在知道Sql语句或者数据表结构的前提下才能这样绑定

         }

 

         myCommand.Connection.Close();

 

      }

    }

}

编译运行后,效果一样,但是更节省了系统的开销。而且我们也可以方面的添加特别的Item,比如这样:

    private void Button1_Click(object sender, System.EventArgs e)

      {

         DropDownList1.Items.Add( new ListItem( "ALL Item", "0" ) );//新加一个Item

         //取得Web.config里的数据库连接字串

         string ConnString = ConfigurationSettings.AppSettings["ConnectionString"];

         //创建一个SqlConnection

         SqlConnectionConn = new SqlConnection( ConnString );

        

         string SQL_Select = "select id, ItemName from DDLItem order by id desc";

         //创建一个SqlCommand

         SqlCommand myCommand = new SqlCommand( SQL_Select, Conn );

         //读取数据记录并绑定

         myCommand.Connection.Open();

         //使用DataReader读取速度更快

         SqlDataReader myReader = myCommand.ExecuteReader();

         while ( myReader.Read() )

         {

            DropDownList1.Items.Add( new ListItem( myReader["ItemName"].ToString(),myReader["id"].ToString() ) );//增加Item

            //或者这样也能绑定,

            //DropDownList1.Items.Add( new ListItem( myReader[1].ToString(),myReader[0].ToString() ) );//增加Item

            //都是要在知道Sql语句或者数据表结构的前提下才能这样绑定

         }

         myCommand.Connection.Close();

      }

编译后的页面代码为:

<select name="DropDownList1" id="DropDownList1">

    <option value="0">ALL Item</option>

    <option value="5">Item5</option>

    <option value="4">Item4</option>

    <option value="3">Item3</option>

    <option value="2">Item2</option>

    <option value="1">Item1</option>

</select>

我们目的就可以灵活的达到了。

     所以说使用SqlDataReaderAdd ListItem可以更快的绑定DropDownList。但是DataSet也可以想这样的绑定DropDownList

private void Button1_Click(object sender, System.EventArgs e)

      {

         //取得Web.config里的数据库连接字串

         string ConnString = ConfigurationSettings.AppSettings["ConnectionString"];

         //创建一个SqlConnection

         SqlConnectionConn = new SqlConnection( ConnString );

        

         string SQL_Select = "select id, ItemName from DDLItem order by id desc";

         //构造一个SqlDataAdapter

         SqlDataAdapter myAdapter = new SqlDataAdapter( SQL_Select, Conn);

         //开始读取数据

         Conn.Open();

         DataSet dataSet = new DataSet();

         myAdapter.Fill( dataSet,"Table1" );

         Conn.Close();

 

         //开始绑定DropDownList

         DataTable dataTable = dataSet.Tables["Table1"];

         foreach( DataRow dataRow in dataTable.Rows )

         {

           DropDownList1.Items.Add( new ListItem( dataRow[1].ToString(), dataRow[0].ToString() ) );

         }

//         //指定DropDownList使用的数据源

//         //DropDownList1.Items.Add( new ListItem( "ALL Item", "0" ) );//新加的代码

//         DropDownList1.DataSource = dataSet.Tables["Table1"].DefaultView;

//         //指定DropDownList使用的表里的那些字段

//         DropDownList1.DataTextField = "ItemName"; //dropdownlistText的字段

//         DropDownList1.DataValueField = "id";//dropdownlistValue的字段

//         DropDownList1.DataBind();

//         DropDownList1.Items.Add( new ListItem( "ALL Item", "0" ) );//新加的代码

 

      }

当然,怎么绑定DropDownList都是个人喜好的问题了,这个都是属于编程技巧的范围了。呵呵,希望大家能一起交流编程的技巧和经验。

待续……

[Asp.Net]4种方法把数据绑定到Dropdownlist

第一种,把Array数组绑到dropdownlist 程序代码string[] Month =new string[7]{ "January", "February", "March", "April...
  • david_520042
  • david_520042
  • 2015年04月28日 19:12
  • 2475

DropDownList 控件 可编辑 查询 绑定数据

使用FineUI框架 前台显示 达到如下效果 一段JS搞定
  • yuluozhaoyang
  • yuluozhaoyang
  • 2016年03月15日 13:51
  • 373

DropDownList数据绑定第一项为空

我们在进行数据绑定时通常把一个表的某个字段绑定到DropDownList中,我们以pubs库的jobs表为例子,我们在显示时显示job_desc字段,values值绑定job_id字段。 方法一: ...
  • liuwei1128
  • liuwei1128
  • 2014年03月14日 21:36
  • 1188

asp.net js实现dropdownlist二级联动(动态)

ASPX端代码: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> http://www.w3.org/1999/...
  • lishimin1012
  • lishimin1012
  • 2014年06月26日 21:06
  • 3198

DropDownList绑定数据表实现两级联动

场景一:平时我们在DropDownList控件下添加下拉选项时,都会使用它的Item.Add方法,直接在代码下添加。如果我们想添加或修改下拉选项,则必须去修改源代码。如果几个DropDownList控...
  • quwenzhe
  • quwenzhe
  • 2014年03月11日 13:39
  • 2161

Objective-C 动态绑定 学习笔记

动态绑定是指在运行程序时(而不是在编译时)将消息与方法对应起来的处理过程。许多对象可能会实现相同的方法,调用方法的方式会动态的变化。因此,动态绑定实现了OOP的多态性。当然,通过动态绑定,因为可以消除...
  • zju_bigjar
  • zju_bigjar
  • 2015年10月28日 23:32
  • 429

为下拉式菜单(DropDownList)添加第一个选项

很多方法可以为为下拉式菜单(DropDownList)添加第一个选项,下面是Insus.NET小结了几个方法,仅供参考: Html code: View Code   数据...
  • linshichen
  • linshichen
  • 2016年07月13日 19:21
  • 3212

ASP.NET中DropDownList控件的简单使用--DDL绑定数据库表中值,选择DDL中值直接检索数据

这篇博客主要说一下DropDownList绑定数据库表中数据,及选择相应DropDownList表中的值会根据此值从数据库中查询相应的数据信息。       一、简单介绍一下我要实现的功能...
  • u010075060
  • u010075060
  • 2015年04月23日 22:18
  • 2216

【.net基础】--DropDownList控件:两级联动

最近学习Asp.Net,发现很多控件都很有意思,例如:Canlender,AdRotator等。以前只知道有这样的页面效果,但是对这些控件了解并不多。不怕不知道,就怕不知道。...
  • successA
  • successA
  • 2015年05月11日 16:45
  • 1666

《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中

先看一下我要实现的功能界面:     这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转换成JSON,然后传递到前台JS文件中,JS解析JSON数据,并将数据显示在界面,主要...
  • mazhaojuan
  • mazhaojuan
  • 2013年02月21日 20:51
  • 23367
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:也谈谈动态绑定dropdownlist(2)
举报原因:
原因补充:

(最多只允许输入30个字)