2014-02-20 2 views
-1

나는 AspNetUsersSqlDataSource을 통해 결합 된 GridView을 가지고 있습니다. GridView_RowCommand을 구현하여 사용자를 삭제 및 수정하려고하지만 ASP.NET Identity API를 통해이를 수행하는 방법을 알 수 없습니다. IdentityUserApplicationUser 클래스로 확장하고 내 DB 컨텍스트를 ApplicationDBContext이라고합니다.
GridView 행에서 삭제 또는 편집을 클릭하면 선택한 사용자에게 주어진 사용자를 삭제하거나 업데이트 할 수 있습니다. 여기GridView의 RowCommand를 사용하여 ASP.NET ID가있는 사용자를 삭제하고 편집 하시겠습니까?

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

이 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

내가, 무슨이 계단식됩니다 확신 : 나는 다시 사물이 작동하게 다음과 같은 마크 업을 생산의 SqlDataSource를 구성 할 때 유일한 변경 작업을 수행 한

테이블의 무리에서 삭제하십시오. – xaisoft

-1

을 나는 해고 된의 GridView의 RowCommand을 시도,하지만 난 그냥의 SqlDataSource에 DeleteCommand에와 UpdateCommand를 지정 결국 그 문제를 해결했다. 이해야 할 무의미하므로

<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

관련 문제