前面我們提到,數據綁定控件把傳遞給數據源的值存放在相互獨立的Keys、Values(新值)和 OldValues字典中。在默認情況下,SqlDataSource和ObjectDataSource會忽略OldValues字段,只使用Keys和Values。這種行為是由數據源的ConflictDetection屬性檢測的,在默認情況下這個屬性的值被設置為OverwriteChanges。OverwriteChanges模式意味著"為了更新或刪除記錄,僅僅匹配主鍵值"。這種操作意味著,記錄的更新或刪除是不考慮該記錄的下層值是否改變過了。在通常情況下,理想的狀態是,只有當數據行的值與最初選擇的值完全匹配的時候,才讓Update或Delete操作成功。在這種理想情況下,如果另外一個用戶在你選擇某一行和更新該行的之間也更新了這一行,你的更新操作就會失敗。通過把ConflictDetection屬性設置為CompareAllValues,數據源也支持這種操作。在這種模式下,數據源會把OldValues應用到命令或方法上,它會使用這些值來確保在更新或刪除記錄之前,更新或刪除操作必須與記錄的所有值都匹配。你還必須把OldValuesParameterFormatString屬性設置為一個有效的.NET框架組件格式化字符串(例如"original_{0}"),來指明OldValues和Keys字典中的參數如何重新命名以便與NewValues參數區分開來。