在我的.aspx页面上,我有一个标签控件,我试图将BackColor设置为等于这样的方法的输出:
<asp:Label ID="myLabel" runat="server" BackColor='<%# getColor() %>'>hello</asp:Label>
在我的代码隐藏中,我有以下内容:
public Color getColor()
{
return System.Drawing.Color.Red;
}
但是,这不起作用。我的标签背景不会根据方法输出更改颜色。
在Page_Load部分的代码隐藏中,如果我说:
myLabel.BackColor = getColor();
这是有效的。因为页面加载期间的某种操作顺序,它不适合我吗?或者我的语法错误在控件内?
我意识到这似乎是不必要的,但我正在努力实现更复杂的基于查询的逻辑功能。试着让最简单的例子立即运作。
答案 0 :(得分:0)
要使其正常运行,您可以使用网页的DataBind
方法,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
this.DataBind();
// or
Page.DataBind();
// or
DataBind();
}
参考文献:
在为.aspx页面上的对象确定并设置特定数据源之后,必须将数据绑定到这些数据源。您可以使用Page.DataBind或Control.DataBind方法将数据绑定到数据源 [...]
在显式调用Web服务器控件的DataBind方法或调用页面级Page.DataBind方法之前,不会向控件呈现任何数据。通常,Page.DataBind(或DataBind)是从Page_Load事件中调用的。