2011-08-01 2 views
0

다음 리피터가 있다고 가정합니다.리피터 바닥 글에서 제어 이벤트 처리

<asp:Repeater ID="MyRepeater" runat="server" onitemdatabound="MyRepeater_ItemDataBound"> 
    <FooterTemplate> 
     </table> 
     <asp:Button ID="btnPrevious" runat="server" Text="<" /> 
     <asp:Label ID="lblCurrentPage" runat="server" Text="<%# PagingStatus() %>" /> 
     <asp:Button ID="btnNext" runat="server" Text=">" /> 
    </FooterTemplate> 
</asp:Repeater> 

어떻게 btnPreviousbtnNext에서 클릭 이벤트를 처리 할 수 ​​있습니까?

나는 시도 다음

protected void MyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    Button btnPrevious = (Button)e.Item.FindControl("btnPrevious"); 
    Button btnNext = (Button)e.Item.FindControl("btnNext"); 

    if (btnPrevious != null) 
     btnPrevious.Click += btnPrevious_Click; 
    if (btnNext != null) 
     btnNext.Click += btnNext_Click; 
} 

그러나 이것은 (이벤트가 발생하지 않습니다) 실패를 ..

답변

3

당신은 당신이 보통의 버튼 이벤트 핸들러를 사용하는 것과 같은 방법으로 사용할 수 있습니다 예 :

HTML :

<asp:Button ID="btnNext" runat="server" CommandArgument="<%=Id%>" onclick="Button_OnClick" Text=">" /> 

코드 :

protected void Button_OnClick(object sender, EventArgs e) 
{ 
    Button button = sender as Button; 
    if(button != null) 
    { 
     string commandArg = button.CommandArgument; 
     //Do Work 
    } 
} 

명령 인수를 사용하여 클릭 한 단추를 찾을 수 있습니다.
희망이 도움이됩니다.

2

리피터의 ItemCommand 이벤트를 사용하는 것이 좋습니다. 그래도 버튼에 명령을 추가해야합니다. 좋아요 :

<asp:Button ID="btnPrevious" runat="server" Text="<" CommandName="Previous"/> 

protected void MyRepeater_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    if(e.CommandName.ToLower().Equals("previous")) { 
     //go back 
    } 
    else 
    { 
     //go forward 
    } 
}