欢迎光临!
我正在创建一个用户控件,它将在GridView控件中显示数据。我们使用的是n层体系结构,所涉及的数据是从数据库中检索出来的,并以ReadOnlyCollection的形式返回给我们。OurNewObject是一个类,包含几个属性和一个不接受参数的空构造函数--它位于以下名称空间中: Acme.ObjectModel。
在用户控件中,我有以下内容:
<asp:GridView ID="ourGrid" runat="server" DataSourceID="ourDataSource">
<columns>
<asp:BoundField DataField="Name" HeaderText="Full Name" />
<asp:BoundField DataField="Gender" HeaderText="Gender" />
<asp:BoundField DataField="BirthYear" HeaderText="Year of Birth" />
<asp:BoundField DataField="JoinDate" HeaderText="Date Joined" />
</columns>
</asp:GridView>
<asp:ObjectDataSource ID="ourDataSource" runat="server" SelectMethod="GetTopUsers" TypeName="Acme.Model.OurNewObject">
</asp:ObjectDataSource>在用户控件背后的代码中,我有以下公共方法:
public ReadOnlyCollection<OurNewObject> GetTopUsers()
{
return (OurDataProxy.GetJustTheTopUsers());
}当我将用户控件放置在Web窗体上并运行它时,我会得到以下消息:
ObjectDataSource 'ourDataSource‘找不到没有参数的非泛型方法“GetTopUsers”。
所以我的问题是:
我在使用incorrectly?
谢谢。
发布于 2008-11-19 21:51:18
我认为这个问题缺少两个属性。
首先在GetTopUsers()方法上添加此属性
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Select, true)]然后在实际的OurNewObject类上添加这个属性
[System.ComponentModel.DataObject]发布于 2008-12-03 02:15:02
通常,您将创建一个包含数据访问方法的单独对象,而不是将方法放在代码后面。单独的对象可以是实例,也可以是静态的,但是对象本身必须有一个无参数的构造函数(或者根本没有构造函数)。
另外,TypeName属性在ObjectDataSource上应该引用上面提到的单独对象的typename .示例:
public class SampleDataObject
{
public ICollection<OurNewObject> GetTopUsers()
{
//[...]
}
}上面提到的属性:类级别上的System.ComponentModel.DataObject(真)和getter方法中的System.ComponentModel.DataObject不是必需的,但是在寻找要将ObjectDataSource连接到的类时,过滤掉其他类型将有助于设计时的支持。
发布于 2008-12-01 06:09:26
尝试将DataKeyNames (添加主键)属性添加到GridView中,看看这是否有效?
https://stackoverflow.com/questions/303460
复制相似问题