0

所以我在 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 的颜色不会根据其值而改变,所以我做错了什么?任何帮助都会很棒

4

2 回答 2

1

您需要处理OnItemDataBoundListView 的事件,而不是实际的数据绑定事件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";
            }
        }
    }
}
于 2013-07-15T15:45:57.157 回答
0

您需要的标签不会触发 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.
    }
 }
于 2013-07-15T15:42:38.527 回答