添加C#脚本以修改ListView中的文本颜色时,没有任何输出

本文关键字:颜色 输出 任何 文本 脚本 修改 ListView 添加 | 更新日期: 2023-09-27 18:22:19

所以我在asp.net中做一个网页,当我添加这个脚本时

protected void YourLabel_DataBinding(object sender, System.EventArgs e)
{
    Label lbl = (Label)(sender);
    int TWA = (int)(Eval("TWA"));
    lbl.Text = TWA.ToString();
    if (TWA >= 85)
    {
        if (TWA < 90)
        {
            lbl.CssClass = "YellowThis";
        }
        else
        {
            lbl.CssClass = "RedThis";
        }
    }
}

并在我的列表视图部分中添加数据绑定行

<ItemTemplate>
    <span style="background-color: white;color: #333333; border: 2em; border-width:1em; border-color:black;"> 
        Plant Name: 
        <asp:Label id="PlantLabel" runat="server" Text='<%# Eval("Plant") %>' />
        <br />
        Department #:
        <asp:Label id="column1Label" runat="server" Text='<%# Eval("column1") %>' />
        <br />
        Department Name:
        <asp:Label id="GroupLabel" runat="server" Text='<%# Eval("Group") %>' />
        <br />
        Job Code:
        <asp:Label id="Job_CodeLabel" runat="server" Text='<%# Eval("Job_Code") %>' />
        <br /> 
        TWA
        <asp:Label id="TWALabel" runat="server" OnDataBinding="YourLabel_DataBinding" Text='<%# Eval("TWA") %>' />
        <br />
    </span>
</ItemTemplate> 

我的列表视图根本不会输出,但如果我删除

OnDataBinding="YourLabel_DataBinding"

我的列表视图输出,但TWA的颜色不会根据其值而改变,所以我做错了什么?任何帮助都将是伟大的

添加C#脚本以修改ListView中的文本颜色时,没有任何输出

您需要处理ListView的OnItemDataBound事件,而不是实际Label的数据绑定事件。您可以在ListView的标记中这样做,如下所示:

<asp:ListView ID="YourListView" OnItemDataBound="YourListView_ItemDataBound" runat="server">

然后在代码后面,您可以处理OnItemDataBound事件,如下所示:

protected void YourListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        Label theTWALabel = (Label)e.Item.FindControl("TWALabel");
        int theTWAValue = Convert.ToInt32(theTWALabel.Text);
        if (theTWAValue >= 85)
        {
            if (theTWAValue < 90)
            {
                theTWALabel.CssClass = "YellowThis";
            }
            else
            {
                theTWALabel.CssClass = "RedThis";
            }
        }
    }
}

您需要的标签不会触发OnDataBinding事件。您必须玩ListView DataBind事件。

在这里你会发现一个的例子

简而言之,这里是最重要的代码:

 protected void ListView1_DataBound(object sender, EventArgs e)
 {
    foreach (ListViewDataItem item in ListView1.Items)
    {
        Label TWALabel = (Label)item.FindControl("TWALabel");
        //Now you have the Label object. do your work.
    }
 }