2015-10-13 76 views
0

我有一个listview和它的ItemTemplate,一个包含一些控件的asp:面板。 我需要将三个不同的css类应用于asp:面板,具体取决于我的asp:面板中某个控件的值。如何将不同的CSS类应用于不同ItemTemplate中的asp:面板?

这里是我的代码:

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:面板?

+0

您应该为您的ItemTemplate添加交替项目。你为什么不尝试这种比较:'String.Compare(type.Value,“2”)== 0)'?此外,该面板应该具有“CssClass”属性,供您添加到控件中。 – Greg

回答

0

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

否则,我也注意到以下几点:

  • 你不占交替的项目(S)。
  • 比较会更好,String.Compare(...);
  • 只有一个面板被调用,这就是为什么只有一个面板颜色改变。

另外,还可以简化代码:

control.CssClass = "style"; 

还指出,它总是显示一个蓝色的背景,我想验证一个值实际上进入你的初始if声明。

相关问题