0

私はリストビューを持っており、それはItemTemplateで、いくつかのコントロールを含むasp:panelです。asp:panel のいずれかのコントロールの値に応じて、3 つの異なる 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 は 1 つだけです。そのため、Panel の色が 1 つだけ変化します。

また、コードを簡素化できます。

control.CssClass = "style";

また、常に青い背景が表示されると述べましたが、値が実際に最初のifステートメントに入力されていることを確認します.

于 2015-10-13T15:05:53.137 に答える