0

我有一个列表视图,它是 ItemTemplate,一个包含一些控件的 asp:panel。我需要对 asp:panel 应用三个不同的 css 类,具体取决于我的 asp:panel 中的一个控件的值。

这是我的代码:

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        HiddenField type = (HiddenField)e.Item.FindControl("valueOfAd_type");
        HiddenField paid = (HiddenField)e.Item.FindControl("valueOfPayment");
        Panel ThePanel = (Panel)e.Item.FindControl("Panel1");
        if ( paid.Value == "2")
        {
            if (type.Value == "1")   //First condition
            {
                ThePanel.Attributes.Add("class", "whiteBackground");
            }
            else if (type.Value == "2")  //Second condition
            {
                ThePanel.Attributes.Add("class", "redBackground"); 
            }
        }
        else  //third condition
        {
            ThePanel.Attributes.Add("class", "blueBackground");
        }
    }
}

问题是,无论发生哪种情况,最后一个 css 类总是适用于我所有的 asp:panels。现在我的问题是如何将不同的 css 类应用于不同 ItemTemplate 中的 asp:panels?

4

1 回答 1

0

为了更好地帮助您,我们需要前端语法。这样我们就可以看到存在于ItemTemplate. 根据您的代码,它似乎是一个面板。

否则,我确实注意到以下内容:

  • 您不考虑交替项目。
  • 比较会更好,与String.Compare(...);
  • 只有一个 Panel 被调用,这就是为什么只有一个 Panel 颜色发生变化的原因。

此外,您可以简化代码:

control.CssClass = "style";

您还说它始终显示蓝色背景,我会验证一个值是否实际输入了您的初始if语句。

于 2015-10-13T15:05:53.137 回答