본문으로 바로가기

Repeater 콘트롤 DataBind() 호출 시 흐름

category .NET/ASP.NET 2014. 6. 2. 13:52

리피터는 바인딩 메소드를 호출 하는 순간부터 aspx 에서 리피터 안에 호출한 cs단 메소를 순차적으로 호출하게 된다.

예)
// CS 부분

{
	public void CallRepeater()
	{
		// 비하인드 소스
		리피터 콘트롤 ID.DataSource = ds.Tables[0];
		리피터 콘트롤 ID.DataBind(); 	//1. 이 시점에서 ASPX에 있는 내부 함수 차례로 호출 시작
        리피터 콘트롤 ID.Dispose();        //3. 모든 호출이 끝난 상태이기 때문에 (html로 내보내짐) 콘트롤이 메모리 상에서 해제 된다 하여도 상관 없다.
	}
	
	//ASPX 호출 메소드
	public string ChnageMoney(string price)
	{
		StringBuilder sb = new StringBuilder();

		sb.AppendFormat("{0}" ,  String.Format("{0:n0}",int.Parse(price)).ToString());

		return sb.ToString();
	}
}

// ASPX 부분
<asp:repeater id="rptList" runat="server" enableviewstate="False">
    <itemtemplate>
    <!-- 2.내부 함수가 호출될때마다 바로바로 바인딩 시작 !-->
    <%# ChnageMoney(((System.Data.DataRowView)Container.DataItem)["TENDOR_MONEY"].ToString())%>         </itemtemplate>

</asp:repeater>