前面的一篇博文呢,是介绍了 Membership 来完成用户的增删改,
独独没有涉及到查这个功能块,所以本篇文章就来补上查找这个功能块,
其实在查找方面呢,是使用 Membership 这个静态类来完成的,
其提供两种方法,Membership.FindUsersByName(string name ) 和
Membership.FindUsersByEmail(string email),
上面的这两个方法都是返回一个集合 MembershipUserCollection ,
也就是 MembershipUser 的集合,
至于在实现方面还是很简单的,直接给个 Demo 就一目了然了,
先看 Demo__9.aspx 吧
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo__9.aspx.cs"
Inherits="WebForm.Demo__9" MaintainScrollPositionOnPostback="True" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="font-family: 微软雅黑; font-size: small">
<br />
<span lang="zh-cn">按用户名查找
<asp:DropDownList ID="ddlUserName" runat="server"
AppendDataBoundItems="True" AutoPostBack="True"
OnSelectedIndexChanged="ddlUserName_SelectedIndexChanged"
Width="200px" style="margin-left: 0px">
<asp:ListItem Value="0">请选择用户......</asp:ListItem>
</asp:DropDownList>
</span>
<br />
<br />
按 Emial 查找
<span lang="zh-cn">
<asp:DropDownList ID="ddlUserEmail" runat="server"
AppendDataBoundItems="True" AutoPostBack="True"
Width="200px" style="margin-left: 0px"
onselectedindexchanged="ddlUserEmail_SelectedIndexChanged">
<asp:ListItem Value="0">请选择用户......</asp:ListItem>
</asp:DropDownList>
</span>
<br />
<br />
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="UserName" />
<asp:BoundField DataField="Email" />
<asp:BoundField DataField="PasswordQuestion" />
<asp:CheckBoxField DataField="IsApproved" />
<asp:CheckBoxField DataField="IsOnline" />
<asp:BoundField DataField="CreationDate" />
</Columns>
</asp:GridView>
<br />
<br />
</div>
</form>
</body>
</html>
然后就是 Code-Behind 了
using System;
using System.Web.Security;
namespace WebForm
{
public partial class Demo__9 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated == false)
{
FormsAuthentication.RedirectToLoginPage();
}
if (!IsPostBack)
{
ddlUserName.DataSource = Membership.GetAllUsers();
ddlUserEmail.DataSource = Membership.GetAllUsers();
ddlUserName.DataTextField = "UserName";
ddlUserName.DataValueField = "UserName";
ddlUserEmail.DataTextField = "Email";
ddlUserEmail.DataValueField = "Email";
ddlUserName.DataBind();
ddlUserEmail.DataBind();
}
}
//按 UserName 查询
protected void ddlUserName_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlUserName.SelectedValue.ToString() != "0")
{
//通过指定的用户名来查找,并返回成员集合 MembershipUserCollection
MembershipUserCollection userCollectionByName =
Membership.FindUsersByName(ddlUserName.SelectedValue);
GridView1.DataSource = userCollectionByName;
GridView1.Columns[0].HeaderText = "用户名";
GridView1.Columns[1].HeaderText = "邮箱";
GridView1.Columns[2].HeaderText = "密码问题";
GridView1.Columns[3].HeaderText = "是否可以验证";
GridView1.Columns[4].HeaderText = "是否在线";
GridView1.Columns[5].HeaderText = "账户创建日期";
GridView1.DataBind();
}
}
//按 Email 查询
protected void ddlUserEmail_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlUserEmail.SelectedValue != "0")
{
//通过指定的 Email 来查找,并返回成员集合 MembershipUserCollection
MembershipUserCollection userCollectionByEmail =
Membership.FindUsersByEmail(ddlUserEmail.SelectedValue);
GridView1.DataSource = userCollectionByEmail;
GridView1.Columns[0].HeaderText = "用户名";
GridView1.Columns[1].HeaderText = "邮箱";
GridView1.Columns[2].HeaderText = "密码问题";
GridView1.Columns[3].HeaderText = "是否可以验证";
GridView1.Columns[4].HeaderText = "是否在线";
GridView1.Columns[5].HeaderText = "账户创建日期";
GridView1.DataBind();
}
}
}
}
整个的一个 Demo 就在上面了,
然后我们再来看效果吧,
先以 XiaoZhen 登录(主要是看后面的 XiaoZhen 是否在线)
以用户名 LiZengXu 查询
以邮箱地址查询
在查看 XiaoZhen
以上就是整个 Demo 的运行结果了,此次 Demo 除了需要注意上面两个方法的使用外,
还要注意 IsApproved 属性的使用,通过这个属性可以来判断当然用户是否在线。
2010—2—07