如何从asp.net中的数据库填充DropDownList?

如何从asp.net中的数据库填充DropDownList?

当我从DropDownList中选择值时如何捕获此事件?

Conn.Open(); SQL = "SELECT distinct city FROM MEN"; dsView = new DataSet(); adp = new SqlDataAdapter(SQL, Conn); adp.Fill(dsView, "MEN"); adp.Dispose(); DropDownList1. ?????? (what do to ?) 

提前致谢

您设置DataSourceDataTextFieldDataValueField并调用DataBind()以填充下拉列表。

数据源几乎可以是任何IEnumerable ,文本和值将通过reflection查找。

您要捕获的事件是SelectedIndexChanged事件 – 更改选择时将触发此事件。

首先获取数据集中的详细信息,然后以下代码将帮助您:

 DropDownList1.DataSource = ds DropDownList1.DataTextField = "emailid" DropDownList1.DataValueField = "userid" DropDownList1.DataBind() DropDownList1.Items.Insert(0, New ListItem("select", "-1")) 

简单的示例代码:

 DropDownList.DataSource = yourDataSource; DropDownList.DataTextField = "displayNameColumnName "; DropDownList.DataValueField = "TheValueColumnName"; DropDownList.DataBind(); 

在这种情况下,这可能是一个完整的演练:

 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindDropDownLists(); } } protected void Page_Init(object sender, EventArgs e) { SqlDataSource sqlDS = new SqlDataSource(); sqlDS.ConnectionString = ConfigurationManager.ConnectionStrings[0].ToString(); sqlDS.SelectCommand = "select GenderID,Gender from mylookupGender"; form1.Controls.Add(sqlDS); DropDownList ddl = new DropDownList(); ddl.ID = "dddlGender"; ddl.DataSource = sqlDS; ddl.DataTextField = "Gender"; ddl.DataValueField = "GenderID"; form1.Controls.Add(ddl); // ... Repeat above code 9 times or put in a for loop if they're all the same... } private void BindDropDownLists() { foreach (Control ctl in form1.Controls) { if (ctl is DropDownList) { (ctl as DropDownList).DataBind(); } } } 
 //...Wrote separate class for calling this function FunctionClass obj = new FunctionClass(); List details = new List(); bool result1 = obj.DataDrop(out details); if (result1 == true) { dropDownDesignation.DataSource = details; dropDownDesignation.DataTextField = "designation"; dropDownDesignation.DataValueField = "Designation_ID"; dropDownDesignation.DataBind(); dropDownDesignation.Items.Insert(0, new ListItem("--Select--", "0")); } //..This function wrote inside FunctionClass and called from aspx.cs page public bool DataDrop(out List designationDetails) { designationDetails = new List(); conn = new SqlConnection(connectionName); conn.Open(); command.Connection = conn; command.CommandType = CommandType.StoredProcedure; command.CommandText = "DesignationDetails"; userReader = command.ExecuteReader(); if(userReader.HasRows) { while(userReader.Read()) { designationDetails.Add(new Designation() { designationId=userReader.GetInt32(0), designation=userReader.GetString(1) }); } } return true; } //..This should declare outside the class but inside the namespace public class Designation { public int designationId { get; set; } public string designation { get; set; } } 

另一种绑定下拉列表的方法是……