也谈谈动态绑定dropdownlist(2)

也谈谈动态绑定dropdownlist2

 

       在我的《也谈谈动态绑定dropdownlist1》的文章里,(http://blog.csdn.net/zsxfbj/archive/ 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();

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

  • 1” id=”DropDownList1”>
  • 新加的All Item这项根本没有。

    另:下面的网游说了那个方法我试了,

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

    这句话改成:DropDownList1.Items.Insert( 0, new ListItem( "ALL Item", "0" ) );就行了。

    如果放在在后面呢?    

    //指定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" ) );//新加的代码

    编译后的页面的代码为:

  •     
  •     
  •     
  •     
  •     
  •     
  • 好像这项有了,但是是放在了最下面,这又不符合我们的一般的习惯。那么怎么办呢?

         既然,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

    {

        ///

        /// Example2 的摘要说明。

        ///

        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);

            }

           

            ///

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

            /// 此方法的内容。

            ///

            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

             SqlConnection Conn = 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

             SqlConnection Conn = 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();

          }

    编译后的页面代码为:

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

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

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

          {

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

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

             //创建一个SqlConnection

             SqlConnection Conn = 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都是个人喜好的问题了,这个都是属于编程技巧的范围了。呵呵,希望大家能一起交流编程的技巧和经验。

    待续……

     

    • 0
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 5
      评论
    评论 5
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值