2010-02-23 66 views
1

刪除參數這裏的設置從DetailsView控件ItemUpdating

  • 我有一個DetailsView,其DataSourceObjectDataSource
  • ObjectDataSource有兩種方法,select和update,它們是在TableAdapter中定義的存儲過程。
  • Select存儲過程需要1個參數 - 記錄ID - 並返回DetailsView中填充的字段。
  • Update存儲過程需要三個參數 - 記錄標識和兩個數據字段。

選擇過程正常。

然而,當我提交了更新,我得到以下錯誤:

ObjectDataSource could not find a non-generic method Update that has parameters: [all 21 table columns]

我想只傳遞給Update存儲過程(3)必要的字段,但DetailsView顯然是想使用從Select收到的所有字段進行更新。

我知道,我可以從DetailsViewUpdateEventArgs訪問NewValues收藏,但我沒有看到一個方法來去除任何的參數,以便它們匹配在存儲過程的定義,TableAdapterObjectDataSource

任何想法?

回答

0

也許this tutorial可以提供一些見解。只要你指定你的數據源的更新方法和更新參數,這應該可以正常工作。

+0

好的,我們正朝着正確的方向前進。在Aaron鏈接到的教程中,我發現: 「爲了確保ObjectDataSource調用[正確] UpdateProduct重載...我們需要限制GridView具有僅用於ProductName和UnitPrice的可編輯字段。通過刪除其他BoundFields和CheckBoxFields,通過將其他字段的ReadOnly屬性設置爲true或通過兩者的某種組合來完成。「 – dneaster3 2010-02-23 17:27:24

+0

現在的問題是,我的DetailsView中的所有字段都是TemplateFields,並且它們沒有ReadOnly屬性。只是刪除EditItemTemplate不起作用,在這種情況下,我不能在DetailsViewMode.Edit中完全刪除這些字段。所以雖然我對這個過程有了更多的瞭解,但我還是沒有說服.NET使用正確的更新方法。 – dneaster3 2010-02-23 17:30:58

0

我已經能夠解決這個問題,現在只需從DetailsViewUpdateEventArgs中的NewValues集合中刪除不需要的值即可。但是,這不是最佳的,因爲如果存儲過程或表單發生更改,我又添加了另一個失敗點。

我還想知道TemplateField是否可以設置爲ReadOnly的方式,即BoundField(請參閱Aaron的答案下面的評論)。

相關問題