也谈谈动态绑定dropdownlist(1)
说来,很多的dropdownlist选项都不是固定的,是会动态改变的,一种方法是在页面上写死,改变时,直接修改页面就可以了。但是很多人是使用动态绑定的,因此dropdownlist的Text和Value是需要动态生成的。
首先我们来创建一个表来存放DropDownList的菜单选项:
create table DDLItem --下拉菜单选项表
(
id int Identity Primary Key, --编号
ItemName varchar(20) --菜单名称
)
再在web.config里添加:
<appSettings>
<add key="ConnectionString" value="server=127.0.0.1;uid=sa;password=1234;database=smsc" />
appSettings>
一个最常用的方法就是用DataSet作为数据源来绑定Dropdownlist的值。
首先我们先在页面上加上一个DropDownList和一个Button,如图所示:
源代码如下:
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
{
///
/// Example1 的摘要说明。
///
public class Example1 : 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";
//构造一个SqlDataAdapter
SqlDataAdapter myAdapter = new SqlDataAdapter( SQL_Select, Conn);
//开始读取数据
Conn.Open();
DataSet dataSet = new DataSet();
myAdapter.Fill( dataSet,"Table1" );
Conn.Close();
//开始绑定DropDownList
//指定DropDownList使用的数据源
DropDownList1.DataSource = dataSet.Tables["Table1"].DefaultView;
//指定DropDownList使用的表里的那些字段
DropDownList1.DataTextField = "ItemName"; //dropdownlist的Text的字段
DropDownList1.DataValueField = "id";//dropdownlist的Value的字段
DropDownList1.DataBind();
}
}
}
效果图如下:
未绑定的
绑定后的
这个方法比较简单实用,可以灵活的指定一个表里的任意字段为DropDownList的Text和Value值。但是DataSet包含的其他属性太多,就是相当于一个脱机的数据库。因此说来,不是很赞成使用这个方法绑定DropDownList。