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

C# ASP.NET:使用Gridview删除用户配置文件,c#,asp.net,authentication,gridview,asp.net-membership,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 它正在获取我的会员数据库中的所有用户名 我想使用Gridview的删除属性从我的成员数据库中删除此用户 sqldatasource中的删除命令为 DeleteCommand="DELETE FRO

我有一个这样的SQL

select B.LoweredUserName
  from USER_BAYI A, aspnet_Users B, aspnet_Membership C
  where B.UserId = C.UserId
  AND B.UserName = A.USERNAME
它正在获取我的会员数据库中的所有用户名

我想使用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);
    }

但这甚至没有编译。我哪里做错了?或者您能告诉我一种方法吗?

在GridView上设置DataKeyNames,如下所示:
DataKeyNames=“ProviderUserKey”
并将OnDeleteCommand设置为某种方法,如:
OnDeleteCommand=“gvUser\U 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上的错误事件。
ondeletted
事件是在删除记录后激发的,您需要
OnDeleting
事件,因为它是在删除记录之前激发的。在
OnDeleting
事件中,您可以添加自定义删除代码,然后取消该事件,但不能在
ondeletted
事件中执行此操作。

是否在GridView上设置了DataKeyName?嗯,这看起来是个不错的解决方案。我这样解决它
protectedvoid SqlDataSource1_Deleting(objectsender,SqlDataSourceCommandEventArgs e){DbCommand cmd=e.Command;string username=cmd.Parameters[@LoweredUserName].Value.ToString();Membership.DeleteUser(username,true);}
@SonerGönül是的,类似。您将在SqlDataSource的事件中删除该用户,而我的解决方案将在GridView的事件中删除该用户。请注意,
Membership.DeleteUser()
搜索的是用户的
UserName
属性,而不是
LoweredUserName
属性。是的,谢谢您为我澄清!我接受这个答案。谢谢你的关注。