2012-10-30 5 views
0

아래와 같이 리피터 컨트롤이있는 웹 사용자 컨트롤이 있습니다. 웹 사용자 컨트롤에있는 리피터를 바인딩하는 방법

<asp:Repeater ID="repeaterInvoicesPaid" runat="server"> 
     </asp:Repeater> 

난 그냥 내가 인 (리피터를 바인딩하는 방법, 물어보고 싶은 테이블 .I에서 데이터를 반환 data.cs C#을 파일 내부의 방법을 page.Now 내 data.aspx로 드래그 사용자 정의 컨트롤 내부)?

data.cs 파일 또는 웹 사용자 정의 컨트롤의 자체 C# 파일 내에 바인드됩니다.

그리고 data.cs 파일 내의 사용자 정의 컨트롤에서 리피터 ID에 액세스하는 방법을 알려주시겠습니까?

미리 감사드립니다.

답변

0

항상 사용자 정의 컨트롤에서 중계기를 반환하는 공용 속성을 만들 수 있습니다. 질문 1로

1

: 당신은 하나

  • 중계기를 노출 할 수 있습니다 (질문 3 참조) 또는
  • 개인적으로

내가 마지막 옵션 찬성입니다 데이터 소스를 노출

데이터 바인딩 옵션의 경우 기본 제공 databind 메소드를 노출하도록 선택하거나 소스가 설정된 경우 databind 할 수 있습니다. 데이터 소스를 노출

public static object RepeaterDataSource { 
    get { return repeater.DataSource; } 
    set { repeater.DataSource = value; } 
} 

처럼 수행 또는 방법은 데이터 바인딩과 같은 설정에 따라 조작 할 수 있도록, 그것을 설정 할 수 있습니다.


질문 2 : 실제 바인딩은 항상 중계기가있는 곳에서 발생합니다. OnItemDataBound 핸들러가 필요한 경우 바인딩 된 위치에 상관없이 UserControl의 코드 숨김에 포함됩니다. 그러나 그 사실을 폭로 할 수는 있지만 그렇게 할 이유는 없습니다.


질문 3 : ID를 원한다면 클라이언트 ID를 가정합니다. 이런 식으로 얻을 수 있습니다

public static string RepeaterClientID { 
    get { return theRepeater.ClientID; } 
} 

실제로 그게 무슨 뜻인지는 모르겠지만. 당신이 다음

public static Repeater TheRepeater { 
    get { return theRepeater; } 
    set { theRepeater = value; } 
} 

마지막을 대신 참조를 원하는 경우, 질문에 대한 추가 답변을 그대로 사용하거나 완전히 삭제합니다. 귀하의 합격률은 매우 낮습니다.

1

사용자 컨트롤 객체를 생성

UserControl을 USR = Page.FindControl ("usercontrolID"); 반복자 rept = usr.FindControl ("repeaterControlID");

rept.DataScourse = Datatbale; rept.DataBind();

관련 문제