首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#为什么OnItemDataBound会在Page_Load之前触发?

C#为什么OnItemDataBound会在Page_Load之前触发?
EN

Stack Overflow用户
提问于 2018-06-05 04:58:47
回答 3查看 264关注 0票数 1

我有一个关于C#中继器的问题。我有默认的宽度设置,它会改变的基础上的Page_Load的一些条件,我想要的变化是通过我的OnItemDataBound图像。但是,OnItemDataBound似乎在Page_Load之前就启动了,因为我在Page_Load中将宽度更改为700,但是当加载图像时,它总是显示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;
    }
}
EN

回答 3

Stack Overflow用户

发布于 2018-06-05 05:07:54

数据绑定是在PageLoad之前在页面生命周期中触发的PrerenderComplete事件上完成的。有关更多信息,请查看https://msdn.microsoft.com/en-us/library/ms178472.aspx#lifecycle_events以查看生命周期事件及其顺序。

票数 0
EN

Stack Overflow用户

发布于 2018-06-05 05:20:58

如果您在标记中声明数据源,它可以更早地呈现所有内容,因为您不需要手动绑定数据。这可能发生在Page_Load之前。

尝试重载较早的事件,如OnLoad或OnPreLoad。这两种情况都发生在Page_Load之前。

如果您显式地执行数据绑定,并在Page_Load之前发生的另一个事件中执行此操作,那么如果您想要更改,则必须确保中继器被重新绑定。一旦调用了databind,它就会被绑定。如果您需要更改某些内容,可以在之前进行更改,也可以重新绑定。

票数 0
EN

Stack Overflow用户

发布于 2021-10-04 21:49:39

您可以使用Page_Init来实现这一点。它在ItemDataBound之前触发:

  protected void Page_Init(object sender, EventArgs e)
  {         
     if (!Page.IsPostBack)
     {
        // load
     }
  }

另请参阅:https://docs.microsoft.com/en-us/previous-versions/aspnet/ms178472(v=vs.100)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50688686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档