【问题标题】:Gridview delete not working with DeleteParameterGridview删除不适用于DeleteParameter
【发布时间】:2013-06-12 16:37:15
【问题描述】:

我有一个问题,即 Gridview 删除无法正常工作。它似乎与 DeleteCommand 和 DeleteParameters 有关。例如,如果我给 DeleteCommand 一个静态值,而不是使用 DeleteParameter,那么 gridview 会删除我静态指定的值的记录。代码如下。

<asp:GridView ID="testGridView" runat="server" AllowSorting="True" 
        AutoGenerateColumns="False" DataKeyNames="Test_ID" 
        DataSourceID="dsourceTest">
    <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
            <asp:BoundField DataField="Test_ID" HeaderText="Test_ID" 
            InsertVisible="False" ReadOnly="True" SortExpression="Test_ID" />
            ...MORE COLUMNS HERE...
    </Columns>
    </asp:GridView>

    <asp:SqlDataSource ID="dsourceTest" runat="server" 
        ConflictDetection="CompareAllValues" 
        ConnectionString="<%$ ConnectionStrings:TestConnectionString %>" 
        SelectCommand="SELECT Test_ID, C2, C3, C4, C5, C6, COALESCE(C7, '') AS C7, C8 FROM TestTable1" 
        DeleteCommand="DELETE FROM [TestTable1] WHERE [Test_ID] = @Test_ID">
        <DeleteParameters>
            <asp:Parameter Name="Test_ID" Type="Int32" />
        </DeleteParameters>
    </asp:SqlDataSource>

因此,使用上面的 DeleteCommand,Delete 将不起作用。但是,如果我将其更改为 DeleteCommand="DELETE FROM [TestTable1] WHERE [Test_ID] = 27",例如,我在 Gridview 中单击删除按钮,它将删除 Test_ID 为 27 的记录。

【问题讨论】:

  • Test_ID 是否包含在您的 定义中?
  • 嗨@Rob,是的,它就在那里,请参阅上面的编辑。不过这有关系吗?

标签: asp.net gridview sqldatasource


【解决方案1】:

我想通了...我不得不将 DeleteCommand 更改为 DeleteCommand="DELETE FROM [ClientService_AP] WHERE [Action_Plan_ID] = @original_Test_ID",因为我在 SqlDataSource 中也有声明 OldValuesParameterFormatString="original_{0}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多