2009-05-26 9 views
1

私はasp:repeaterコントロールで行の色を変更するために私が知っているすべてを試してきました。 私がしようとしているのはこれです:値に基づいて、私はリピータコントロールのレコードの色を設定できるようにしたいと思います。 DIVタグを試しましたが、動作させることはできません。 これについてはどうすればよいですか? ThaksASP.Netリピータコントロール

+2

はあなたのコードを共有しますか?これを行うには多くの方法があります。既存のコードがどのように適合しているか、われわれが推測していることを知る必要があります。あなたは何かを得るかもしれませんが、もっと良い方法があるかもしれません。 –

+0

貼り付けようとすると、Stackoverflowがコードを切り詰めます。このコードは基本的なRepeaterコントロールに過ぎず、空想的なものではありません。 –

+1

コードを単純化して、全体を投稿せずにポイントを取得する –

答えて

4

あなたはこのに異なった方法の多くを解決し、どのようなあなたに応じて、可能性

protected void rpt_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     if (e.Item.DataItem != null) 
     { 
      string color = (string)DataBinder.Eval(e.Item.DataItem, "RowColor"); 
      HtmlTableRow rowToColor = (HtmlTableRow)e.Item.FindControl("Row"); 
      rowToColor.Attributes.CssStyle.Add("background-color", color); 
     } 
    } 

とaspxページでは、このような何か

<asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_OnItemDataBound"> 
    <ItemTemplate> 
     <tr id="Row" runat="server"> 
      <td> 
      &nbsp; 
      </td> 
     </tr> 
    </ItemTemplate> 
</asp:Repeater> 
0

の背後にあるコードではこのような何かを試してみてくださいリピーターは、あなたのように見える必要がありますまたはあなたがそれに送信しているデータは、最善の答えはありません。ここでは、データを評価し、適切なカラーレスポンスと比較するハックの回避策を示します。

リピータのアイテムテンプレートでは、divで囲みます。

<div style="background-color:<%# GetBG((string)(DataBinder.Eval(Container.DataItem,"DataField")))%>"> 

と背後にあるコードでこれは非常に良い、それを行う方法とはかなり無駄ではありません

public string GetBG(string demo) 
    { 

     if (demo == "TestData2") 
      return "yellow"; 
     return "Green"; 
    } 

を決定する機能を持っています。 onDataBind関数は、このタスクを達成するためのさらに別の方法を示したかっただけです。

5

条件付き書式設定を行うにはItemTemplateに内<%の#%の>データバインディング構文を使用します。

<asp:Repeater runat="server" ID="rpt"> 
    <ItemTemplate> 
    <div class="<%# Container.ItemIndex % 2 ? "even" : "odd" %>"> 
    </div> 
    <div class="<%# Eval("PropertyOfDataSource") %>"> 
    </div> 
    </ItemTemplate> 
</asp:Repeater>