2014-02-20 83 views
-1

我有一個GridView,它通過SqlDataSource綁定到AspNetUsers。我正在嘗試執行GridView_RowCommand以刪除和編輯/更新用戶,但我無法弄清楚如何通過ASP.NET身份API執行此操作。我已將IdentityUser擴展爲名爲ApplicationUser的類,我的數據庫上下文名爲ApplicationDBContext
當我單擊刪除或編輯GridView行時,如何刪除或更新給定選定用戶的用戶。使用GridView的RowCommand使用ASP.NET標識刪除和編輯用戶?

這是我到目前爲止,但其基本沒什麼:

protected void Users_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Delete") 
     { 
      //How do I delete? 

     } 
     else if(e.CommandName == "Edit") 
     { 
      How do I Update? 
     } 
    } 

回答

-1

這裏是我放在一起,我沒有的Visual Studio所以它可能不是100%的例子,但它是足夠接近你的目的,我會說:

protected void Users_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Delete") 
    { 
     int id = Convert.ToInt32(Users.DataKeys[e.RowIndex].Value); 
     ApplicationUser user = (ApplicationUser)IdentityManager.Store.Users.FindAsync(id, CancellationToken.None); 
     using (ApplicationDbContext dbcontext = new ApplicationDbContext()) 
     { 
      dbcontext.UserLogins.RemoveRange(dbcontext.UserLogins.Where(ul => ul.UserId == user.Id)); 
      dbcontext.UserRoles.RemoveRange(dbcontext.UserRoles.Where(ur => ur.UserId == user.Id)); 
      dbcontext.UserSecrets.RemoveRange(dbcontext.UserSecrets.Where(us => us.UserName == user.UserName)); 
      dbcontext.UserManagement.RemoveRange(dbcontext.UserManagement.Where(um => um.UserId == user.Id)); 
      dbcontext.Users.Remove(dbcontext.Users.Where(usr => usr.Id == user.Id).Single()); 
      dbcontext.SaveChanges(); 
     } 
    } 
} 
+0

我敢肯定有級聯回事,所以它是沒有意義的有從一堆表中刪除。 – xaisoft

-1

起初,我試圖在GridView的RowCommand其被解僱了,但後來我剛剛結束了對指定在SqlDataSource中的DeleteCommand和更新命令,並且解決了這個問題。

當我配置它產生下面的標記這反過來又使事情工作的SqlDataSource唯一的改動是:

<asp:SqlDataSource ID="UsersSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" 
        SelectCommand="SELECT [Id], [UserName], [FirstName], [LastName], [Email] FROM [AspNetUsers]" 
        DeleteCommand="DELETE FROM [AspNetUsers] WHERE [Id] = @Id" 
        InsertCommand="INSERT INTO [AspNetUsers] ([Id], [UserName], [FirstName], [LastName], [Email]) VALUES (@Id, @UserName, @FirstName, @LastName, @Email)" 
        UpdateCommand="UPDATE [AspNetUsers] SET [UserName] = @UserName, [FirstName] = @FirstName, [LastName] = @LastName, [Email] = @Email WHERE [Id] = @Id"> 
        <DeleteParameters> 
         <asp:Parameter Name="Id" Type="String" /> 
        </DeleteParameters> 
        <InsertParameters> 
         <asp:Parameter Name="Id" Type="String" /> 
         <asp:Parameter Name="UserName" Type="String" /> 
         <asp:Parameter Name="FirstName" Type="String" /> 
         <asp:Parameter Name="LastName" Type="String" /> 
         <asp:Parameter Name="Email" Type="String" /> 
        </InsertParameters> 
        <UpdateParameters> 
         <asp:Parameter Name="UserName" Type="String" /> 
         <asp:Parameter Name="FirstName" Type="String" /> 
         <asp:Parameter Name="LastName" Type="String" /> 
         <asp:Parameter Name="Email" Type="String" /> 
         <asp:Parameter Name="Id" Type="String" /> 
        </UpdateParameters> 
       </asp:SqlDataSource> 
+0

在你原來的問題中,你從來沒有說過代碼沒有執行..你只是問:「如何刪除/更新」。此外,因爲這是答案,所以你修改了哪些代碼來解決你的問題,這樣任何遇到這個問題的人都可能會從中得到一些東西。 – Seany84

+0

@ Seany84 - 我的帖子已更新。正如你所看到的,在我通過嚮導配置SqlDataSource之後,只有標記是自動創建的。它只是問我是否想爲我創建惰性,upate和刪除。 – xaisoft

+0

這樣比較好,至少其他遇到這個線索的人會從中得到一些東西。我仍然不相信問題的標題與您的答案相符。 – Seany84

相關問題