GridView 컨트롤에 데이터를 표시 할 사용자 정의 컨트롤을 만들고 있습니다. 우리는 n-tier 아키텍처를 사용하고 있으며 문제의 데이터는 데이터베이스에서 검색되어 ReadOnlyCollection으로 반환됩니다. OurNewObject는 여러 속성을 포함하는 클래스이고 매개 변수를 사용하지 않는 빈 생성자입니다.이 이름은 다음 네임 스페이스에 있습니다. Acme.ObjectModel. 사용자 정의 컨트롤에서
, 나는 다음과 같은 한 :public ReadOnlyCollection<OurNewObject> GetTopUsers()
{
return (OurDataProxy.GetJustTheTopUsers());
}
가 나는에 사용자 컨트롤을 배치 :
<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>
을 사용자 정의 컨트롤의 코드에서 뒤에, 나는 다음과 같은 공공 방법을 웹 양식을 작성하고 실행하면 다음 메시지가 나타납니다.
ObjectDataSource 'ourDataSource'가 pa가없는 일반 메소드 'GetTopUsers'를 찾을 수 없습니다. rameters.
그래서 제 질문은 다음과 같습니다
- 것은 내가 ObjectDataSource를 잘못을 사용하고 있습니까?
- 이 상황에서 ObjectDataSource를 사용하는 더 적절한 방법이 있습니까?
감사합니다.
문제는 OurNewObject가 다른 어셈블리에 정의되어 있으므로 해당 특성을 추가 할 수 없다는 것입니다. – Bullines
그런 다음 다른 방식으로 바인딩해야합니다. 컬렉션을 가져 와서 데이터 소스를 설정 한 다음 코드 숨김에서 databind를 호출하십시오. –