如何更改标签';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"应该是红色。

如何更改标签';s的颜色,该颜色存在于转发器的Onload函数中

您可以使用条件运算符:

 <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 %>'>

假设"在中继器内"的意思是标签在ItemTemplateAlternatingItemTemplate内,则应该使用RepeaterItemDataBound事件而不是标签的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;