문제

이 작업을 수행 한 모든 샘플은이 작업을 수행하기 위해 내 페이지의 onload 이외의 기능을 작성하는 것으로 구성되지만 더 간결한 방법이 있는지 궁금합니다. Headertemplate 내부에 레이블이 있으며 레이블의 텍스트를 문자열로 설정하고 싶습니다. 레이블이 리피터 외부에 있으면 다음을 수행 할 수 있습니다.

Month.Text = Enum.GetName(typeof(Month), Convert.ToInt16(MonthList.SelectedValue));

이것을하는 간결한 방법이 있습니까?

도움이 되었습니까?

해결책

다음을 시도하십시오 내부에 헤더 템플릿 :

<asp:Label ID="Month" runat="server" Text='<%# (Month)Convert.ToInt16(MonthList.SelectedValue) %>' />

다른 팁

Databinding 이벤트를 사용하면 더 나을 것입니다.

ASPX 마크 업 :

<asp:Repeater ID="repTest" runat="server">
    <HeaderTemplate>
        <asp:Label ID="lblHeader" runat="server" />
    </HeaderTemplate>
</asp:Repeater>

뒤에 코드 :

protected void Page_Load(object sender, EventArgs e)
{
    repTest.ItemDataBound += new RepeaterItemEventHandler(repTest_ItemDataBound);

    int[] testData = { 1, 2, 3, 4, 5, 6, 7, 8 };
    repTest.DataSource = testData;
    repTest.DataBind();
}

void repTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Header)
    {
        Label lblHeader = e.Item.FindControl("lblHeader") as Label;
        if (lblHeader != null)
        {
            lblHeader.Text = "Something";
        }
    }
}

당신은 간다 :)

리피터가 데이터에 묶일 때까지 기다릴 필요가 있는지 여부는 100% 확실하지 않지만 이것이 헤더 내에서 컨트롤에 액세스하는 방법입니다.

var myLabel = MyRepeater.Controls[0].Controls[0].FindControl("MyLabel") as Label;
myLabel.Text = "Hello World";

아마도 그것을 여러 줄로 나누고 컨트롤에 객체가 있는지 확인해야합니다 [0].

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