如何将不同的css类应用于不同ItemTemplate中的asp:panel

本文关键字:中的 ItemTemplate asp panel 应用于 css | 更新日期: 2023-09-27 18:17:41

我有一个列表视图,并在它的ItemTemplate,一个asp:面板,其中包括一些控件。我需要应用三个不同的css类到asp:panel,这取决于我的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:面板。现在我的问题是如何将不同的css类应用到不同的ItemTemplate中的asp:面板?

如何将不同的css类应用于不同ItemTemplate中的asp:panel

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

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

  • 你没有考虑到交替项目。
  • String.Compare(...);比较效果更好。
  • 只有一个面板被调用,这就是为什么只有一个面板的颜色改变。

也可以简化代码:

control.CssClass = "style";

您还说它总是显示蓝色背景,我将验证一个值实际上进入了您的初始if语句