在Repeater的HeaderTemplate中设置MyLabel.Text

Chr*_*cia 3 asp.net repeater web-controls

我发现这样做的每个样本都包括在我的页面的OnLoad之外编写一个函数来执行此操作,但我很好奇是否有更简洁的方法来实现它.我在HeaderTemplate中有一个Label,我只想将标签的文本设置为字符串.如果标签位于转发器之外,我可以执行以下操作:

Month.Text = Enum.GetName(typeof(Month), Convert.ToInt16(MonthList.SelectedValue));
Run Code Online (Sandbox Code Playgroud)

有简洁的方法吗?

Gro*_*mer 10

如果您使用DataBinding事件会更好.

ASPX标记:

<asp:Repeater ID="repTest" runat="server">
    <HeaderTemplate>
        <asp:Label ID="lblHeader" runat="server" />
    </HeaderTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

代码背后:

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";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你去:)