使用ObjectDataSource注意DeleteMethod、UpdateMethod、Insert等方法中參數的命名規範
來源:互聯網
上載者:User
使用ObjectDataSource注意DeleteMethod、UpdateMethod等方法中參數的命名規範:
如: 如果UpdateMethod原型為:
<DataObjectMethod(DataObjectMethodType.Update, True)> _
Public Shared Sub UpdateBuild(ByVal sBuildID As String, ByVal sBuildNo As String, ByVal sBuildLoc As String)
則參數指定應為:
<UpdateParameters>
<asp:ControlParameter ControlID="txtBuildID" Name="sBuildID" PropertyName="Text" />
<asp:ControlParameter ControlID="txtBuildNO" Name="sBuildNo" PropertyName="Text" />
<asp:ControlParameter ControlID="txtBuildLoc" Name="sBuildLoc" PropertyName="Text" />
</UpdateParameters>
這些中的parameter的名稱要與UpdateMethod中的方法名稱完全一樣。
GridView的 DataKeyNames屬性被賦值為隱含對象的主鍵。這是在使用GridView來編輯或刪除資料的要點,因為這個屬性象指出了標識唯一記錄的那個欄位(或是一組欄位)。
----------------補充ObjectDatasource的幾個約定
objectDatasource綁定到gridview時且使用<%#運算式繫結資料行時,要更新,需注意:
1.設定gridview的datakeyNames為主索引值(更新需要的主鍵列)
2.objectdatasource中的update方法中參數名必須與取出的記錄的欄位名同名
3.所有<%#bind列的資料欄位名都需要出現在objectdatasource中的update方法中參數中
4.如果需要根據原始主索引值,則需要設定原始索引值的格式化名稱OldValuesParameterFormatString="ORG_{0}",且根據gridview的datakeyNames(例如為ID)中的欄位名形成的ORG_ID這樣的名稱,要出現在objectdatasource的update方法中。
5.不需要設定UpdateParameters屬性,除非有額外的參數,ConflictDetection不需要設定(預設即使用OverwriteChanges)
如果3或5沒有滿足,就會出現“找不到非泛型方法XXXXX”了