ASP.NET:使用Gridview删除用户配置文件

时间:2011-11-18 09:00:46

标签: c# asp.net authentication gridview asp.net-membership

我有这样的SQL;

select B.LoweredUserName
  from USER_BAYI A, aspnet_Users B, aspnet_Membership C
  where B.UserId = C.UserId
  AND B.UserName = A.USERNAME

它在我的会员数据库中获取所有用户名。

enter image description here

我想使用Gridview的删除属性从我的会员数据库中删除此用户。

我在sqldatasource中的删除命令是;

DeleteCommand="DELETE FROM aspnet_Users
WHERE  LoweredUserName = @LoweredUserName" ondeleted="SqlDataSource1_Deleted"

protected void SqlDataSource1_Deleted(object sender, SqlDataSourceStatusEventArgs e)
    {
        DbCommand cmd = e.Command;
        string username = cmd.Parameters["@LoweredUserName"].Value.ToString();
        Membership.DeleteUser(username);
    }

但这甚至无法编译。我哪里做错了?或者你能告诉我这样做的方法吗?

1 个答案:

答案 0 :(得分:1)

在GridView上设置DataKeyNames,如下所示:DataKeyNames="ProviderUserKey"并将OnDeleteCommand设置为某种方法:OnDeleteCommand="gvUser_DeleteCommand"

然后在后面的代码中实现onDelete方法,如下所示:

protected void rgUser_DeleteCommand(object source, GridCommandEventArgs e)
{
    GridDataItem gdiItem = (GridDataItem)e.Item;
    try
    {
        string strUserKey = gdiItem.GetDataKeyValue("ProviderUserKey").ToString();
        Guid guiUserKey = new Guid(strUserKey);
        string strUserName = Membership.GetUser(guiUserKey).UserName.ToString();

        Membership.DeleteUser(strUserName);
    }
    catch (Exception ex)
    {
        //handle exception
    }
}

只是为了获取更多信息,您将绑定到SqlDataSource上的错误事件。删除记录后会触发OnDeleted事件,并且您需要OnDeleting事件,因为在删除记录之前会触发该事件。在OnDeleting活动中,您可以添加自定义删除代码,然后取消活动,但不能在OnDeleted活动中执行此操作。