我在dropdownlist中添加了一个数据库中没有的项"All",
ddlRoleName.Items.Insert(0,new ListItem("All","0"));
数据库中有两个表:role表和UserMst表
role表有:
roleID    roleName
 1         admin
 2         member
UserMst表有:
userID    account    userName    password    gender    roleIDdropdownlist 绑定:DataTextField = "roleName;
                  DataValueField = "roleID";
那么怎么绑定"All"选项呢?(实现功能是:点击All时,显示所有数据。)
其实这个功能我已经完成了,就是觉得有点复杂
这是我写的测试页面,中间有些段重复了的...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.Configuration;
using System.Data.SqlClient;namespace Training1.Part3
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DropDownList ddlRoleName;
protected System.Web.UI.WebControls.DataGrid dgUserMst;
string ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionSqlServer"].ToString();

private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
BindDDLRoleName(); BindDataGrid();
}
} void BindDDLRoleName()
{
SqlConnection conn = new SqlConnection(ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("Select * from role",conn);
DataSet ds = new DataSet();
da.Fill(ds); ddlRoleName.Items.Clear();
ddlRoleName.DataTextField = "roleName";
ddlRoleName.DataValueField = "roleID";
ddlRoleName.DataSource = ds.Tables[0];;
ddlRoleName.DataBind();
ddlRoleName.Items.Insert(0,new ListItem("All","0"));
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{    
this.ddlRoleName.SelectedIndexChanged += new System.EventHandler(this.ddlRoleName_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void ddlRoleName_SelectedIndexChanged(object sender, System.EventArgs e)
{
SqlConnection conn = new SqlConnection(ConnectionString);
SqlCommand cmd = null;
SqlDataAdapter da = null;
DataSet ds = new DataSet(); if(ddlRoleName.SelectedIndex == 0)
{
string query = "select * from role,UserMst where role.RoleID=UserMst.roleID";
da = new SqlDataAdapter(query,conn);
da.Fill(ds); }
else
{
cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "usp_SelectUserMsgRoleID";
cmd.CommandType = CommandType.StoredProcedure; da = new SqlDataAdapter(cmd);
cmd.Parameters.Add("@roleID",System.Data.SqlDbType.Int);
cmd.Parameters["@roleID"].Value = ddlRoleName.SelectedValue.ToString(); da.Fill(ds);
} dgUserMst.DataSource = ds.Tables[0];
dgUserMst.DataBind();
} void BindDataGrid()
{
SqlConnection conn = new SqlConnection(ConnectionString);
SqlDataAdapter da = null;
DataSet ds = new DataSet(); string query = "select * from role,UserMst where role.RoleID=UserMst.roleID";
da = new SqlDataAdapter(query,conn);
da.Fill(ds);
dgUserMst.DataSource = ds.Tables[0];
dgUserMst.DataBind();
}
}
}再附上html代码:<form id="Form1" method="post" runat="server">
<asp:DropDownList style="Z-INDEX: 101; POSITION: absolute; TOP: 160px; LEFT: 152px" id="ddlRoleName"
runat="server" AutoPostBack="True" AppendDataBoundItems="True"></asp:DropDownList>
<asp:DataGrid style="Z-INDEX: 102; POSITION: absolute; TOP: 208px; LEFT: 152px" id="dgUserMst"
runat="server" AutoGenerateColumns="False" BorderColor="#999999" BorderStyle="None" BorderWidth="1px"
BackColor="White" CellPadding="3" GridLines="Vertical" HorizontalAlign="Center">
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#DCDCDC"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084" HorizontalAlign="Center"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="account" HeaderText="loginID"></asp:BoundColumn>
<asp:BoundColumn DataField="userName" HeaderText="userName"></asp:BoundColumn>
<asp:BoundColumn DataField="password" HeaderText="password"></asp:BoundColumn>
<asp:BoundColumn DataField="gender" HeaderText="gender"></asp:BoundColumn>
<asp:BoundColumn DataField="roleName" HeaderText="role"></asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>
</asp:DataGrid>
</form>
还有没有别的方法呢?另外就是用这种方法绑定数据后,页面刷新回不到默认项"All"的选项,而是为最后一次点击dropdownlist时选择的项。
还有就是在浏览器中点击后退,Dropdownlist的项与dataGrid表对不上,不过重新点击绑定的数据又是正确的,这又是为什么呢?asp.netdropdownlist