문제

인사말!

GridView 컨트롤에 데이터를 표시 할 사용자 컨트롤을 만들고 있습니다. 우리는 N-Tier Architecture를 사용하고 있으며 해당 데이터는 데이터베이스에서 검색되어 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());
}

사용자 컨트롤을 웹 양식에 배치하고 실행하면 다음과 같은 메시지가 표시됩니다.

ObjectDataSource 'ourdatasource'는 매개 변수가없는 비 게 릭 방법 'gettopusers'를 찾을 수 없었습니다.

그래서 내 질문은 다음과 같습니다.

  1. ObjectDatasource를 잘못 사용하고 있습니까?
  2. 이 상황에서 ObjectDatasource를 사용하는 더 적절한 방법이 있습니까?

감사.

도움이 되었습니까?

해결책

나는이 문제에 두 가지 속성이 없다고 생각합니다.

먼저 getTopusers () 메소드 에서이 속성을 추가하십시오.

[System.ComponentModel.DataObjectMethodAttribute
    (System.ComponentModel.DataObjectMethodType.Select, true)]

그런 다음 실제 ournewobject 클래스 에서이 속성을 추가하십시오

[System.ComponentModel.DataObject]

다른 팁

일반적으로 메소드를 코드 베어드에 넣는 대신 데이터 액세스 방법을 포함하는 별도의 개체를 만듭니다. 별도의 객체는 인스턴스 또는 정적 일 수 있지만 객체 자체에는 매개 변수가없는 생성자가 있어야합니다 (또는 생성자가 전혀 없음).

또한 ObjectDatasource의 타이프 이름 속성은 위에서 언급 한 별도의 개체의 타이프 이름을 참조해야합니다. 예시:

public class SampleDataObject
{
  public ICollection<OurNewObject> GetTopUsers()
  {
    //[...]
  }
}

위에서 언급 한 속성 : [system.componentmodel.dataobject (true)] 클래스 레벨에서, [system.componentmodel.dataobjectmethod (dataObjectMethodtype.Select)]는 필요하지 않지만 설계 시간 지원에 도움이됩니다. ObjectDatasource를 연결하는 클래스를 찾을 때 다른 유형을 필터링합니다.

추가 해보세요 DataKeyNames (기본 키 추가) 속성에 GridView 그리고 그것이 작동하는지 보시겠습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top