ASP.net Repeater 如何更改header 模板标题服务器端?

ASP.net Repeater How to change header template caption server side?

我想根据某些变量的状态将文本 "Employer Info" 更改为其他内容。如何获取标题的引用以便更改其文本?

<asp:Repeater ID="rptEmployers" runat="server">
  <HeaderTemplate>
    <table class="rotoTable1">
      <caption class="rotoTableCaption1">Employer Info</caption>
  </HeaderTemplate>

您需要使用中继器上的 ItemDataBound 事件来执行此操作,并使用 runat=server 更新您的标题,以便您可以从 code-behind.[=14= 操作它]

<asp:Repeater ID="rptEmployers" OnItemDataBound="rptEmployers_ItemDataBound" runat="server">
  <HeaderTemplate>
    <table class="rotoTable1">
      <caption id="CaptionCtrl" runat="server" class="rotoTableCaption1">Employer Info</caption>
  </HeaderTemplate>

在你的代码隐藏文件中,你会有这样的东西:

protected void rptEmployers_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    switch (e.Item.ItemType)
    {
        case ListItemType.Header:

            HtmlGenericControl CaptionCtrl= (HtmlGenericControl) e.Item.FindControl("CaptionCtrl");
            CaptionCtrl.InnerHtml = "Your new text"

            break;
    }
}

您可以使用 Repeater 的 ItemDataBound。

<asp:Repeater ID="rptEmployers" runat="server" OnItemDataBound="rptEmployers_ItemDataBound">
    <HeaderTemplate>
        <table class="rotoTable1">
            <caption class="rotoTableCaption1">
                <asp:Literal ID="EmployerCaptionLabel" runat="server" Text="Employer Info"></asp:Literal>
            </caption>
    </HeaderTemplate>

在后面的代码中,将标题设置为您需要的任何内容:

protected void rptEmployers_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Header)
    {
        var employerCaption = (Literal)e.Item.FindControl("EmployerCaptionLabel");
        employerCaption.Text = "<your caption here>";
    }
}