0

Gridview の削除が正しく機能しないという問題があります。DeleteCommand と DeleteParameters に関係があるようです。たとえば、DeleteParameter を使用するのではなく、DeleteCommand に静的な値を指定すると、グリッドビューは静的に指定した値でレコードを削除します。コードは以下です。

<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 のレコードが削除されます。

4

1 に答える 1

0

私はそれを理解しました... SqlDataSourceDeleteCommand="DELETE FROM [ClientService_AP] WHERE [Action_Plan_ID] = @original_Test_ID"にもステートメントOldValuesParameterFormatString="original_{0}"があったため、DeleteCommandをに変更する必要がありました。

于 2013-06-12T17:56:38.677 に答える