【问题标题】:SQL Delete from DataGridView is not happening从 DataGridView 中删除 SQL 没有发生
【发布时间】:2017-03-30 12:19:53
【问题描述】:

我有一个启用了删除的 DataGridView,但它从未发生过。整个网格消失(多行),但我单击的行的删除从未发生。

我可以在 sql management studio 中手动运行 sql 语句,它工作得很好,但似乎从来没有从网页上运行。

我不知道从哪里开始,我以前从 GridView 中没有遇到过这样的问题。

SqlDataSource:

<asp:SqlDataSource ID="SqlDataSourceVisitors" runat="server" ConnectionString="constring" DeleteCommand="DELETE FROM [RegisteredVisitors] WHERE [PK] = @PK UPDATE [dbo].[Users] SET [NumberOfVisitors] = (SELECT [NumberOfVisitors] FROM [dbo].[NumberOfVisitors] WHERE [ResidentName] = @ResidentName) -1 WHERE [ResidentName] = @ResidentName" InsertCommand="INSERT INTO [RegisteredVisitors] ([ResidentName], [ResidentAddress], [VisitorCode], [VisitorName]) VALUES (@ResidentName, @ResidentAddress, @VisitorCode, @VisitorName)" SelectCommand="SELECT * FROM [RegisteredVisitors] WHERE ([ResidentName] = @ResidentName)" UpdateCommand="UPDATE [RegisteredVisitors] SET [ResidentName] = @ResidentName, [ResidentAddress] = @ResidentAddress, [VisitorCode] = @VisitorCode, [VisitorName] = @VisitorName WHERE [PK] = @PK" ProviderName="System.Data.SqlClient">
        <DeleteParameters>
            <asp:Parameter Name="PK" Type="Int32" />
            <asp:Parameter Name="ResidentName" Type="String" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="ResidentName" Type="String" />
            <asp:Parameter Name="ResidentAddress" Type="String" />
            <asp:Parameter Name="VisitorCode" Type="Int32" />
            <asp:Parameter Name="VisitorName" Type="String" />
        </InsertParameters>
        <SelectParameters>
            <asp:ControlParameter ControlID="txtboxSelectedResident" Name="ResidentName" PropertyName="Text" Type="String" />
        </SelectParameters>
        <UpdateParameters>
            <asp:Parameter Name="ResidentName" Type="String" />
            <asp:Parameter Name="ResidentAddress" Type="String" />
            <asp:Parameter Name="VisitorCode" Type="Int32" />
            <asp:Parameter Name="VisitorName" Type="String" />
            <asp:Parameter Name="PK" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>

网格视图:

<asp:GridView ID="DataGridViewVisitors" runat="server" CellPadding="4" DataSourceID="SqlDataSourceVisitors" ForeColor="#333333" GridLines="None">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:CommandField ShowDeleteButton="True" />
        </Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>

【问题讨论】:

    标签: c# sql asp.net gridview sqldatasource


    【解决方案1】:

    如果我是正确的,您只是错过了 DeleteCommand 中的 ;。写在命令中的所有内容都将一次性执行。因此,要分离出您需要的删除和更新查询;。

    DeleteCommand="DELETE FROM [RegisteredVisitors] WHERE [PK] = @PK; UPDATE [dbo].[Users] SET [NumberOfVisitors] = (SELECT [NumberOfVisitors] FROM [dbo].[NumberOfVisitors] WHERE [ResidentName] = @ResidentName) -1 WHERE [ResidentName] = @ResidentName"
    

    【讨论】:

    • 分离不是答案,完全删除第二个语句是。
    • 我需要其他声明。
    • 我确实尝试过,现在它突然告诉我我必须声明我的参数。这很令人困惑,因为你可以看到,它们就在那里。
    • 它应该可以工作。不能说出了什么问题。您可以尝试使用存储过程的另一件事。使用删除命令查询创建一个 SP 并使用它。 DeleteCommand="YourStoredProc" DeleteCommandType="StoredProcedure"
    • 同意,如果您需要运行多个语句,存储过程是更好的选择。我想知道解析器是否只考虑第一个语句。它到底在抱怨什么参数?全部,还是仅 UPDATE 语句中的一个?
    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多