2012-03-18 51 views
0

所以我想更新我的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很好),它似乎永遠不會更新無論如何我都會嘗試數據。 數據的性質是否會導致此數據源對其他數據源採取不同的行爲?還是我做了一些愚蠢的事情?

謝謝! :)

+0

檢查出:http://stackoverflow.com/questions/2429864/gridviews- newvalues-and-oldvalues-empty-on-onrowupdating-event – Aristos 2012-03-19 00:20:06

+0

然後爲自己做出答案,描述解決方案並接受它。 – Aristos 2012-03-19 08:52:58

+0

嘿,這個問題太「新」了,無法做到。我會盡快再試一次。 – 2012-03-19 20:42:21

回答

1

我發現了答案!數據字段'field6'不包含在我的Gridview中作爲字段。我可以使它工作:) (也可以將其添加爲DataKeyName)