ASP. net Повторитель Как изменить заголовок шаблона заголовка на стороне сервера? - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу изменить текст «Информация работодателя» на что-то другое в зависимости от состояния определенных переменных. Как получить ссылку на заголовок, чтобы я мог изменить его текст?

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

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Вы можете использовать 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>";
    }
}

1 голос
/ 23 апреля 2020

Вам необходимо сделать это, используя событие ItemDataBound на ретрансляторе и обновив заголовок с помощью runat=server, чтобы вы могли манипулировать им из-за кода.

<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;
    }
}
...