所以我想更新我的GridView中,我得到這個錯誤:更新GridView的錯誤 - 「oldValues爲空」
You have specified that your update command compares all values on SqlDataSource 'SqlDataSource1', but the dictionary passed in for oldValues is empty. Pass in a valid dictionary for update or change your mode to OverwriteChanges.
這裏是SQL數據源的問題:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT field1, field2, field3, field4, field5, field6
FROM table
ORDER BY field4"
UpdateCommand="UPDATE table2
SET field2 = @field2 , field3 = @field3, field4 = @field4
WHERE (field1 = @original_field1) AND (field6 = @original_field6)"
FilterExpression="field1 LIKE '{0}'">
<FilterParameters>
<asp:ControlParameter ControlID="SearchBox" Name="field1" Type="String" DefaultValue="" />
</FilterParameters>
<SelectParameters>
<asp:ControlParameter ControlID="SearchBox" Name="field1" Type="String" DefaultValue="" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="field2" Type="String" />
<asp:Parameter Name="field3" Type="String" />
<asp:Parameter Name="field4" Type="Int32" />
<asp:Parameter Name="original_field1" Type="String" />
<asp:Parameter Name="original_field5" Type="Int32" />
<asp:Parameter Name="original_field2" Type="String" />
<asp:Parameter Name="original_field3" Type="String" />
<asp:Parameter Name="original_field4" Type="Int32" />
<asp:Parameter Name="original_field6" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
現在我明白瞭解決這個問題的一種方法是將'CompareAllValues'更改爲'OverwriteChanges',但是我從來沒有必要這樣做(我有更新的頁面上的其他GridViews很好),它似乎永遠不會更新無論如何我都會嘗試數據。 數據的性質是否會導致此數據源對其他數據源採取不同的行爲?還是我做了一些愚蠢的事情?
謝謝! :)
檢查出:http://stackoverflow.com/questions/2429864/gridviews- newvalues-and-oldvalues-empty-on-onrowupdating-event – Aristos 2012-03-19 00:20:06
然後爲自己做出答案,描述解決方案並接受它。 – Aristos 2012-03-19 08:52:58
嘿,這個問題太「新」了,無法做到。我會盡快再試一次。 – 2012-03-19 20:42:21