ASP.NET 2.0中给DropDownList服务器控件添加项的新方法

 
在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 >

 

    另外,还可以使用下面的方法添加:

protected   void  DropDownList1_DataBound( object  sender, EventArgs e)
{
DropDownList1.Items.Insert(
0 , new  ListItem( " --请选择-- " "" ));
}

你可能感兴趣的:(ASP.NET 2.0中给DropDownList服务器控件添加项的新方法)