2012-05-26 101 views
0

我做了一個GridView刪除和編輯鏈接按鈕來執行編輯和刪除操作。這適用於編輯按鈕,但不適用於刪除按鈕。問題是什麼?刪除用戶從會員

當我跑我的應用程序,它給了我這個錯誤:

Must declare the scalar variable "@UserName"

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
DataSourceID="SqlDataSource1"> 
<Columns> 
<asp:CheckBoxField DataField="IsApproved" HeaderText="IsApproved" 
SortExpression="IsApproved" /> 
<asp:BoundField DataField="UserName" HeaderText="UserName" 
SortExpression="UserName" /> 
<asp:CheckBoxField DataField="IsLockedOut" HeaderText="IsLockedOut" 
SortExpression="IsLockedOut" /> 
<asp:CommandField ShowEditButton="True" ShowDeleteButton="True" /> 
</Columns> 
</asp:GridView> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" 
SelectCommand="SELECT [IsApproved], [UserName], [IsLockedOut] FROM [vw_aspnet_MembershipUsers]" 
UpdateCommand="UPDATE [vw_aspnet_MembershipUsers] SET IsApproved = @IsApproved, IsLockedOut = @IsLockedOut WHERE (UserName = @UserName)" 
DeleteCommand="DELETE FROM [vw_aspnet_MembershipUsers] WHERE (UserName = @UserName)"> 
<UpdateParameters> 
<asp:Parameter Name="IsApproved" /> 
<asp:Parameter Name="IsLockedOut" /> 
<asp:Parameter Name="UserName" /> 
</UpdateParameters> 
<DeleteParameters> 
<asp:Parameter Name="IsApproved" /> 
<asp:Parameter Name="IsLockedOut" /> 
<asp:Parameter Name="UserName" /> 
</DeleteParameters> 

</asp:SqlDataSource> 
</asp:Content> 
+1

你應該或者通過會員'Membership.DeleteUser(user.UserName)'或通過存儲過程'[DBO]刪除刪除。 [aspnet_Users_DeleteUser]' –

回答

2

你應該或者通過Membership.DeleteUser(user.UserName)或通過存儲過程[dbo].[aspnet_Users_DeleteUser]

http://www.salmontraining.com/SqlExpressZone/articles/deleting_users_from_membership.html

+0

我也會使用存儲過程。將您的刪除語句更改爲EXEC [dbo]。[aspnet_Users_DeleteUser],然後查看是否拾取參數。 – angusf

+0

@angusf:提供4個參數(請參閱鏈接)。 –

+0

是的,對不起,不好的階段,我應該添加一個(S)。當時我沒有一個數據庫在我面前命名,但我只是指的是問題中特別提到的參數。 – angusf

0

我的建議是要處理SqlDataSource的「刪除」事件。調用asp.net成員api來從後面的代碼中刪除。

確保導入System.Web.Security,然後嘗試這樣的事:

// Delete Membership User 
    Membership.DeleteUser(UserName); 

從視圖中刪除一條記錄是不是真的無論如何最偉大的方法。