如何更改标签';s的颜色,该颜色存在于转发器的Onload函数中
本文关键字:颜色 存在 转发器 Onload 函数 何更改 标签 | 更新日期: 2023-09-27 18:27:55
正如标题所说,我在中继器内部有一个标签,我想根据它的文本值更改它的颜色。有什么办法我能做到这一点而不会一团糟吗?
<asp:Label ID="lblVerified" runat="server" Text='<%# Eval("post_verified")%>' OnLoad="lblVerified_Load"
我想做的是,如果Eval("post_verified").Evals(Yes),颜色应该是绿色,而"NO"应该是红色。
您可以使用条件运算符:
<asp:Label ID="lblVerified" ForeColor='<%# (Eval("post_verified").Equals("Yes")) ? "Green" : "Red" %>' runat="server" Text='<%# Eval("post_verified")%>' OnLoad="lblVerified_Load">
通过这个小编辑,工作得很有魅力:
<asp:Label ID="lblVerified" runat="server" Text='<%# Eval("post_verified")%>' ForeColor='<%# (Eval("post_verified").Equals("yes")) ? System.Drawing.Color.Green : System.Drawing.Color.Red %>'>
假设"在中继器内"的意思是标签在ItemTemplate
或AlternatingItemTemplate
内,则应该使用Repeater
的ItemDataBound
事件而不是标签的OnLoad
事件,因为OnLoad
事件发生得太早。
您需要声明事件处理程序。。。
repearter1.ItemDataBound += repearter1_ItemDataBound;
然后在事件处理程序中,您可以找到并操作标签控件。。。
void repearter1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Label lblVerified = e.Item.FindControl("lblVerified") as Label;
if (lblVerified != null)
{
//TODO: manipulate the control
}
}
请注意,如果执行以下操作,也可以从ItemDataBound
事件内部获取数据项。。。
var dataItem = e.Item.DataItem as WhateverTheUnderlyingTypeIs;