Установка MyLabel.Text в шаблоне заголовка повторителя

StackOverflow https://stackoverflow.com/questions/890571

  •  23-08-2019
  •  | 
  •  

Вопрос

Каждый пример, который я нашел, состоит из написания функции за пределами 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";

Вероятно, вам следует разбить это на несколько строк и проверить, есть ли объект в Controls[0].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top