Sql ObjectDataSource更新
我有一个启用了编辑功能的gridview(CustomerDetails)。当我单击编辑按钮并更新其中一个5/6字段(我将所有字段更改为templatefield,然后将edittemplate设置为我不想编辑的字段的标签)时,我收到一个错误: ObjectDataSource“ObjectDataSource1”找不到具有以下参数的非泛型方法“UpdateCustomerAddressZip”:CustomerID、CustomerAddressOne、CustomerAddressS2、CustomerZip、original\u CustomerID 对象数据源代码是Sql ObjectDataSource更新,sql,gridview,objectdatasource,templatefield,Sql,Gridview,Objectdatasource,Templatefield,我有一个启用了编辑功能的gridview(CustomerDetails)。当我单击编辑按钮并更新其中一个5/6字段(我将所有字段更改为templatefield,然后将edittemplate设置为我不想编辑的字段的标签)时,我收到一个错误: ObjectDataSource“ObjectDataSource1”找不到具有以下参数的非泛型方法“UpdateCustomerAddressZip”:CustomerID、CustomerAddressOne、CustomerAddressS2、Cu
<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>
在SQL为
UPDATE Customer
SET CustomerAddressOne = @CustomerAddressOne,
CustomerZip = @CustomerZip
WHERE CustomerID=@CustomerID
有人能告诉我哪里出了问题吗
谢谢简单回答:
更改OldValuesParameterFormatString=“原始”
到OldValuesParameterFormatString=“{0}”
从错误中可以看出:
“ObjectDataSource'ObjectDataSource1'找不到非泛型
方法“UpdateCustomerAddressZip”,其参数为CustomerID,
CustomerAddressOne、CustomerAddressS2、CustomerZip、,
“原始用户ID”
还有一个附加参数:original\u CustomerID
如果您想要实现乐观并发性,就需要这样做,以确保您在数据库上执行的更新不会与其他更改冲突
斯科特·米切尔很好地解释了这一点。
为方便起见,我在此报告相关部分:
使用向导配置ObjectDataSource的一个副作用
Visual Studio是否设置了OldValuesParameterFormatString属性
到原始{0}。此属性值用于包含原始属性
正在编辑的数据的值,在两种情况下非常有用:
- 如果在编辑记录时,用户能够更改主键 价值在这种情况下,新主键值和原始主键值 必须提供主键值,以便 可以找到原始主键值并更新其值 因此
- 当使用乐观并发时。乐观并发 是一种确保两个同时使用的用户不会覆盖的技术 彼此的变化,这是未来教程的主题
UPDATE Customer
SET CustomerAddressOne = @CustomerAddressOne,
CustomerZip = @CustomerZip
WHERE CustomerID=@CustomerID