实例类的绑定子属性导致ObjectDataSource上的UpdateParameters出错

时间:2011-12-20 15:13:06

标签: asp.net objectdatasource

我有一个类,其上有一个实例属性,如下面的

Public Class Security

Public Property UserData As User

End Class

当我使用ObjectDataSource绑定GridView时,以下语法用于绑定Gridview中的下拉列表和工作,但是当准备好更新记录时

<act:ComboBox ID="cbxEmpNames" runat="server" Width="278px" AutoPostBack="False"
DataSourceID="odsEmployeeNames" DataTextField="FullNameFNLM" 
DataValueField="ID" SelectedValue='<%# Bind("UserData.ID") %>'>

看到问题似乎出现了,因为ComboBox有自己的ObjectDataSource,名为odsEmployeeNames,其Key =“ID”。但是 GridView 有自己的ObjectDataSource,所选的ComboBox值由'&lt;%#Bind(“UserData.ID”)%&gt;'

绑定

我得到的错误如下:

ObjectDataSource'odsAdminSecurity'找不到具有参数的非泛型方法'Save':NameID,IsAdminUser,UserData.ID,ID。

Save()方法的签名如下:

Public Sub Save(ID As Integer, ByVal NameID As Integer, ByVal IsAdminUser As Boolean)

它试图添加UserData.ID的绑定值,但该参数是“NameID”参数,它要求的UserData.ID应该是该值。我过去得到的方法是让ObjectDataSources(ComboBox和Gridview)的密钥名称具有相同的名称(即两者都是名称'NameID')。

有关如何纠正此问题的任何想法? 谢谢!

2 个答案:

答案 0 :(得分:0)

您的保存签名有三个参数,而错误表明您有四个参数传递给您的方法。你可以发布调用代码,以便我们仔细看看吗?具体来说,你在哪里调用Save()方法?

答案 1 :(得分:0)

好吧,我从未完全弄清楚这一点。修复是稍微修改类设计,不使用子属性绑定到包含自己的ODS的组合框。通过使employee组合的绑定值与Save()方法上的参数名称匹配,一切正常。