logo

ASP.NET 2.0中给DropDownList服务器控件添加项的新方法
作者:孟宪会 发表于:2006-09-12 23:08:53

在ASP.NET 2.0中,可以在数据绑定时,通过设置DropDownList的AppendDataBoundItems属性为true,在数据绑定之前添加一个新的项目,并且这个新加的项目会保存在ViewState之中。下面就是一个实现的例子:

C#代码

<%@ Page Language="C#" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> ICollection CreateDataSource() { DataTable dt = new DataTable(); DataRow dr; dt.Columns.Add(new DataColumn("id", typeof(Int32))); dt.Columns.Add(new DataColumn("text", typeof(string))); for (int i = 0; i < 6; i++) { dr = dt.NewRow(); dr[0] = i; dr[1] = "列表项目 " + i.ToString(); dt.Rows.Add(dr); } DataView dv = new DataView(dt); return dv; } protected void Button1_Click(object sender, EventArgs e) { Response.Write("<li>DropDownList1 您选择的项目:" + DropDownList1.SelectedValue + " ; " + DropDownList1.SelectedItem.Text); Response.Write("<li>DropDownList2 您选择的项目:" + DropDownList2.SelectedValue + " ; " + DropDownList2.SelectedItem.Text); } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DropDownList1.AppendDataBoundItems = true; DropDownList1.Items.Add(new ListItem("-- 请选择一个选择项 --", "")); DropDownList2.DataSource = DropDownList1.DataSource = CreateDataSource(); DropDownList2.DataTextField = DropDownList1.DataTextField = "text"; DropDownList2.DataValueField = DropDownList1.DataValueField = "id"; DropDownList1.DataBind(); DropDownList2.DataBind(); } } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>DropDownList 补充例子</title> </head> <body> <form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server"> </asp:DropDownList> <asp:DropDownList ID="DropDownList2" runat="server" AppendDataBoundItems="true"> <asp:ListItem Text="请选择" Value=""></asp:ListItem> </asp:DropDownList> <asp:Button ID="Button1" runat="server" Text="得到选择的值" OnClick="Button1_Click" /> </form> </body> </html>

VB.NET代码

<%@ Page Language="VB" AutoEventWireup="true" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Response.Write("<li>DropDownList1 您选择的项目:" + DropDownList1.SelectedValue + _ " ; " + DropDownList1.SelectedItem.Text) Response.Write("<li>DropDownList2 您选择的项目:" + DropDownList2.SelectedValue + _ " ; " + DropDownList2.SelectedItem.Text) End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) If Not IsPostBack Then DropDownList1.AppendDataBoundItems = True DropDownList1.Items.Add(New ListItem("-- 请选择一个选择项 --", "")) DropDownList2.DataSource = CreateDataSource() DropDownList1.DataSource = CreateDataSource() DropDownList2.DataTextField = "text" DropDownList1.DataTextField = "text" DropDownList2.DataValueField = "id" DropDownList1.DataValueField = "id" DropDownList1.DataBind() DropDownList2.DataBind() End If End Sub Function CreateDataSource() As ICollection Dim dt As DataTable = New DataTable() Dim dr As DataRow dt.Columns.Add(New DataColumn("id", GetType(System.Int32))) dt.Columns.Add(New DataColumn("text", GetType(String))) For i As Integer = 0 To 6 dr = dt.NewRow() dr(0) = i dr(1) = "列表项目 " + i.ToString() dt.Rows.Add(dr) Next Dim dv As DataView = New DataView(dt) Return dv End Function </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>DropDownList 补充例子</title> </head> <body> <form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server"> </asp:DropDownList> <asp:DropDownList ID="DropDownList2" runat="server" AppendDataBoundItems="true"> <asp:ListItem Text="请选择" Value=""></asp:ListItem> </asp:DropDownList> <asp:Button ID="Button1" runat="server" Text="得到选择的值" OnClick="Button1_Click" /> </form> </body> </html>