編集が有効になっているグリッドビュー (CustomerDetails) があります。編集ボタンをクリックして 5/6 フィールドの 1 つを更新すると (すべてのフィールドを templatefield に変更し、edittemplate を編集可能にしたくないフィールドのラベルに設定します)、エラーが発生します:
「ObjectDataSource 'ObjectDataSource1' は、パラメーターを持つ非ジェネリック メソッド 'UpdateCustomerAddressZip' を見つけることができませんでした: CustomerID、CustomerAddressOne、CustomerAddressTwo、CustomerZip、original_CustomerID」
オブジェクトのデータソース コードは次のとおりです。
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" InsertMethod="InsertCustomer"
OldValuesParameterFormatString="original_{0}" SelectMethod="CustomerDetails" UpdateMethod="UpdateCustomerAddressZip"
TypeName="Enterprise.CustomerEntityLayer">
<InsertParameters>
<asp:Parameter Name="CustomerID" Type="Int32" />
<asp:Parameter Name="CustomerAddressOne" Type="String" />
<asp:Parameter Name="CustomerAddressTwo" Type="String" />
<asp:Parameter Name="CustomerZip" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="CustomerID" Type="Int32" />
<asp:Parameter Name="CustomerAddressOne" Type="String" />
<asp:Parameter Name="CustomerZip" Type="String" />
</UpdateParameters>
<SelectParameters>
<asp:ControlParameter ControlID="Gridview1" DbType="Int32" Name="CustomerID" PropertyName="SelectedValue" />
</SelectParameters>
</asp:ObjectDataSource>
エンティティレイヤーでの私の方法は次のとおりです。
Public Function UpdateCustomerAddressZip(ByVal CustomerID As Integer, ByVal CustomerAddressOne As String, ByVal CustomerZip As Integer)
Dim dt As New CustomerDataTable
Dim C_row As CustomerRow = dt.NewCustomerRow
C_row.CustomerID = CustomerID
C_row.CustomerAddressOne = CustomerAddressOne
C_row.CustomerZip = CustomerZip
Adapter.UpdateCustAddZip(CustomerID, CustomerAddressOne, CustomerZip)
End Function
SQLが
UPDATE Customer
SET CustomerAddressOne = @CustomerAddressOne,
CustomerZip = @CustomerZip
WHERE CustomerID=@CustomerID
誰がどこが間違っているのかアドバイスできますか?
ありがとう