繁体   English   中英

使用sqlDataSource从表和ASPNET成员资格提供程序中删除用户

[英]Delete User from Table and ASPNET Membership Provider with sqlDataSource

我有一个Gridview通过sqlDataSource显示联系人列表。

包括用于删除记录的项目模板-LinkBut​​ton-,其中OnClientClick设置为使用某些JavaScript:“返回确认('确定要删除此用户吗?');” 这会给用户一些弹出窗口,提示是或取消选项。

当从联系人表中删除用户时,我还需要使用Membership.DeleteUser(UserName,true)语句在AspNet Membership表中删除同一用户。

Membership表的Contact.IntranetUserName列和UserName包含相同的数据值,从而使事情变得很方便。

不知道要使用什么事件,我从使用Gridview的OnRowCommand开始-但无法弄清楚如何获取要删除的行的“ IntranetUserName”列的值(通过“联系表”中的“项目模板”)并传递它到Membership.DeleteUser语句。

关于此的任何C#想法都将非常令人赞赏。 也许我应该改用GridView的OnRowDeleted或OnRowDeleting? 还是LinkBut​​tons OnCommand?

GridView和SqlDataSource在这里:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ContactID" 
                    DataSourceID="SqlDataSource2" Width="738px" OnRowCommand="deleteFromAspnetProvider" >
                    <Columns>
                        <asp:TemplateField ShowHeader="False">
                            <ItemTemplate>
                                <asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="return confirm('Are you sure you want to delete this user?');" 
                                    CommandName="Delete" Text="Delete User"></asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField DataField="IntranetUserName" HeaderText="IntranetUserName" SortExpression="IntranetUserName" Visible="false"  />

                        <asp:BoundField DataField="FirstName" HeaderText="First Name" 
                            SortExpression="FirstName" />
                        <asp:BoundField DataField="LastName" HeaderText="Last Name" 
                            SortExpression="LastName" />
                        <asp:BoundField DataField="CompanyName" HeaderText="Company" 
                            SortExpression="CompanyName" />
                        <asp:BoundField DataField="EmailAddress" HeaderText="Email Address" 
                            SortExpression="EmailAddress" />
                        <asp:BoundField DataField="UserLevelType" HeaderText="UserLevelType" 
                            SortExpression="UserLevelType" />
                    </Columns>
                </asp:GridView>

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DataConnect %>" 

    SelectCommand="SELECT * FROM [Contact] WHERE ([CompanyName] = @CompanyName)" 
    DeleteCommand="DELETE FROM [Contact] WHERE [ContactID] = @ContactID" 
    InsertCommand="INSERT INTO [Contact] ([UserId], [UserSID], [LocationID], [IntranetUserName], [FirstName], [LastName], [CompanyName], [EmailAddress], [ContactPhone], [ContactPhoneExt], [ContactFAX], [DateUpdated], [ActiveMember], [UserLevelType]) VALUES (@UserId, @UserSID, @LocationID, @IntranetUserName, @FirstName, @LastName, @CompanyName, @EmailAddress, @ContactPhone, @ContactPhoneExt, @ContactFAX, @DateUpdated, @ActiveMember, @UserLevelType)" 
    UpdateCommand="UPDATE [Contact] SET [UserId] = @UserId, [UserSID] = @UserSID, [LocationID] = @LocationID, [IntranetUserName] = @IntranetUserName, [FirstName] = @FirstName, [LastName] = @LastName, [CompanyName] = @CompanyName, [EmailAddress] = @EmailAddress, [ContactPhone] = @ContactPhone, [ContactPhoneExt] = @ContactPhoneExt, [ContactFAX] = @ContactFAX, [DateUpdated] = @DateUpdated, [ActiveMember] = @ActiveMember, [UserLevelType] = @UserLevelType WHERE [ContactID] = @ContactID">
    <SelectParameters>
        <asp:ControlParameter ControlID="memberCompanyNameLabel" Name="CompanyName" 
            PropertyName="Text" Type="String" />
    </SelectParameters>
    <DeleteParameters>
        <asp:Parameter Name="ContactID" Type="Int32" />
        <asp:Parameter Name="IntranetUserName" Type="String" />
    </DeleteParameters>
    <UpdateParameters>
        <asp:Parameter Name="UserId" Type="Object" />
        <asp:Parameter Name="UserSID" Type="Int32" />
        <asp:Parameter Name="LocationID" Type="Int32" />
        <asp:Parameter Name="IntranetUserName" Type="String" />
        <asp:Parameter Name="FirstName" Type="String" />
        <asp:Parameter Name="LastName" Type="String" />
        <asp:Parameter Name="CompanyName" Type="String" />
        <asp:Parameter Name="EmailAddress" Type="String" />
        <asp:Parameter Name="ContactPhone" Type="String" />
        <asp:Parameter Name="ContactPhoneExt" Type="String" />
        <asp:Parameter Name="ContactFAX" Type="String" />
        <asp:Parameter Name="DateUpdated" Type="DateTime" />
        <asp:Parameter Name="ActiveMember" Type="Boolean" />
        <asp:Parameter Name="UserLevelType" Type="Int32" />
        <asp:Parameter Name="ContactID" Type="Int32" />
    </UpdateParameters>
    <InsertParameters>
        <asp:Parameter Name="UserId" Type="Object" />
        <asp:Parameter Name="UserSID" Type="Int32" />
        <asp:Parameter Name="LocationID" Type="Int32" />
        <asp:Parameter Name="IntranetUserName" Type="String" />
        <asp:Parameter Name="FirstName" Type="String" />
        <asp:Parameter Name="LastName" Type="String" />
        <asp:Parameter Name="CompanyName" Type="String" />
        <asp:Parameter Name="EmailAddress" Type="String" />
        <asp:Parameter Name="ContactPhone" Type="String" />
        <asp:Parameter Name="ContactPhoneExt" Type="String" />
        <asp:Parameter Name="ContactFAX" Type="String" />
        <asp:Parameter Name="DateUpdated" Type="DateTime" />
        <asp:Parameter Name="ActiveMember" Type="Boolean" />
        <asp:Parameter Name="UserLevelType" Type="Int32" />
    </InsertParameters>
</asp:SqlDataSource>

尝试改用RowDeleting事件。

void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
  string name = e.Values["IntranetUserName"] as string;
}

PS:我没有在这台计算机上安装VS,所以我自己不能真正对其进行测试...对不起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM