ASP.NET: удалить профиль пользователя с Gridview - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть 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:; 1011 *

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 Ответ

1 голос
/ 18 ноября 2011

Установите DataKeyNames в GridView следующим образом: 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.

...