2012-05-26 77 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); 

从视图中删除一条记录是不是真的无论如何最伟大的方法。