dropdownlist里面的"全部"选项

yuyi1991616 2013-04-01 05:17:56
我在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 roleID

dropdownlist 绑定: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表对不上,不过重新点击绑定的数据又是正确的,这又是为什么呢?
...全文
102 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2013-04-08
  • 打赏
  • 举报
回复
没啥问题吧,有啥复杂
yuyi1991616 2013-04-02
  • 打赏
  • 举报
回复
没人知道么~~~~

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧