2011-03-18 4 views
3

리피터와 버튼이있는 페이지가 있습니다.이 이벤트가 발생하는 이유는 무엇입니까?

public void rptEtats_ItemCreated(object sender, RepeaterItemEventArgs e) 
{ 
    //Stuff 
} 

페이지에있는 버튼

<asp:Button ID="btnValid" runat="server" Text="Valid" OnClick="btnValid_click" /> 

코드 숨김을 OnClick 이벤트를 마련 : (매우 간단)

내 중계기는 이벤트 rptEtats_ItemCreated

<asp:Repeater ID="rptEtats" runat="server" OnItemCreated="rptEtats_ItemCreated"> 
    <ItemTemplate> 

    </ItemTemplate> 

</asp:Repeater> 

코드 숨김 OnItemCreated을 제기 있습니다 :

public void btnValid_click(Object sender, EventArgs e) 
{ 
    //Stuff 
} 

내가 버튼을 클릭 할 때까지이 작업 괜찮아요, 난 btnValid_click 방법을 기대하지만 rptEtats_ItemCreated 방법은 처음이라고합니다! 나는 왜 그런지 이해하지 못한다. 버튼 메서드를 호출하기 전에 페이지가 다시로드됩니까? 리피터가 다시 데이터 바인딩을하는 이유는 무엇입니까?

답변

1

뷰 상태가로드되기 전에 Page_Init에 cal rptEtats.Databind();을 입력해야합니다. 이 경우 컨트롤이 제대로 다시 만들어지고 버튼 onclik이 실행됩니다.

+0

이 답변이 질문과 관련이 있는지 궁금합니다. – thorn

1

Page_Load 이벤트에 rptEtats.Databind() 전화가 걸렸을 것입니다.

맞습니까?

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     rptEtats.Databind(); 
    } 

} 

당신이 알 동작은 페이지 수명주기 때문이다

true의 경우, 호출이 같은이 방법을 sorround. 페이지로드 이벤트는 Click 이벤트 전에 호출됩니다.

+0

나는 이미이 조건으로 바인딩을 둘러 쌌다. – bAN

+0

Oups, Item_Databound와 혼동한다. 죄송합니다. –

2

중계기가 다시 바인딩되지 않습니다. 뷰 상태의 항목 수를 저장합니다. 포스트 백에서는이 값을 읽고 하위 뷰 컨트롤 (항목)을 적절한 횟수만큼 생성하여 뷰 상태를로드 할 수있게합니다. ItemCreated 이벤트는 항목이 만들어 질 때마다 발생합니다.

관련 문제