C # Почему OnItemDataBound срабатывает до Page_Load? - PullRequest
0 голосов
/ 04 июня 2018

У меня вопрос по поводу повторителя c #.У меня есть настройка ширины по умолчанию, и она изменит базу при некоторых условиях в Page_Load, я хочу, чтобы изменение было передано моему изображению на OnItemDataBound.Тем не менее, кажется, что OnItemDataBound запускается до Page_Load, потому что я изменил ширину на 700 в Page_Load, но когда изображение загружено, оно всегда показывает 380 вместо этого.Если OnItemDataBound не является правильной функцией для использования, какую функцию я должен вызвать, чтобы я мог изменить ширину изображения после вызова Page_Load (где установлена ​​настраиваемая ширина)?Я пробовал OnPreLoad, OnLoad, и ни один из них не работал.

 protected int width = 380;

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        width = 700;
    }
}

protected void Test_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    RepeaterItem item = e.Item;
    if ((item.ItemType == ListItemType.Item) || (item.ItemType == ListItemType.AlternatingItem))
    {
        Image Image = (Image)e.Item.FindControl("Image");

        Image.ImageUrl = Utilities.generateImage();
        Image.Width = width;
    }
}

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Если вы объявите источник данных в разметке, он может отрендерить все намного раньше, поскольку вы не выполняете ручную привязку данных.Это может произойти до Page_Load.

Попробуйте перегрузить более раннее событие, такое как OnLoad или OnPreLoad.Оба из них происходят до Page_Load.

Если вы явно выполняете привязку данных и делаете это в другом событии, которое происходит до Page_Load, то вам нужно будет убедиться, что ретранслятор восстановлен, если вы хотите что-то изменить,Как только вы вызываете databind, он связывается.Если вам нужно что-то изменить, либо сделайте это раньше, либо повторите привязку.

0 голосов
/ 05 июня 2018

Привязка данных выполняется для события PrerenderComplete, которое запускается на жизненном цикле страницы до PageLoad.Для получения дополнительной информации проверьте https://msdn.microsoft.com/en-us/library/ms178472.aspx#lifecycle_events, чтобы увидеть события жизненного цикла и их порядок.

...