现在的位置: 首页 > 综合 > 正文

Membership 详解之查找用户

2012年04月17日 ⁄ 综合 ⁄ 共 4667字 ⁄ 字号 评论关闭

前面的一篇博文呢,是介绍了 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">按用户名查找&nbsp;&nbsp;&nbsp;&nbsp;
            <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>
            &nbsp;&nbsp;&nbsp; </span>
        <br />
        <br />
        按 Emial 查找&nbsp;&nbsp;&nbsp;&nbsp;
        <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 是否在线)

image

以用户名 LiZengXu 查询

image

以邮箱地址查询

image

在查看 XiaoZhen

image 

以上就是整个 Demo 的运行结果了,此次 Demo 除了需要注意上面两个方法的使用外,

还要注意 IsApproved 属性的使用,通过这个属性可以来判断当然用户是否在线。

                                              2010—2—07

 

抱歉!评论已关闭.