2013-06-12 4 views
0

Gridview 삭제가 올바르게 작동하지 않는 문제가 있습니다. 그것은 DeleteCommand 및 DeleteParameters와 관련이있는 것 같습니다. 예를 들어 DeleteParameter를 사용하는 대신 DeleteCommand에 정적 값을 지정하면 gridview는 정적으로 지정한 값으로 레코드를 삭제합니다. 코드는 다음과 같습니다.Gridview 삭제가 DeleteParameter와 작동하지 않습니다.

<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를 그대로 사용하면 삭제가 작동하지 않습니다. 그러나 예를 들어 DeleteCommand="DELETE FROM [TestTable1] WHERE [Test_ID] = 27"으로 변경하고 Gridview의 삭제 버튼을 누르면 27의 Test_ID를 가진 레코드가 삭제됩니다.

+0

정의에 Test_ID가 포함되어 있습니까? – Rob

+0

안녕하세요, @ Rob, 네, 저기 있어요, 위의 편집 참조하십시오. 그래도 될까? –

답변

0

내가 알아 냈습니다 ... DeleteCommand를 DeleteCommand="DELETE FROM [ClientService_AP] WHERE [Action_Plan_ID] = @original_Test_ID"으로 변경해야했습니다. 또한 SqlDataSource에 OldValuesParameterFormatString="original_{0}"이라는 진술을했기 때문에.

관련 문제