2009-05-26 15 views
1

Ich habe alles versucht, was ich weiß, um die Farbe einer Zeile in einem asp: Repeater-Steuerelement zu ändern. Was ich versuche zu tun ist: Basierend auf einem Wert, ich möchte die Farbe eines Datensatzes im Repeater-Steuerelement festlegen können. Ich habe DIV-Tags versucht, kann es nicht funktionieren. Wie gehe ich vor? ThaksASP.Net Repeater Steuerelement

+2

Code teilen? Es gibt viele Möglichkeiten, dies zu tun, und wir müssen wissen, wie Ihr bestehender Code zusammenpasst, oder wir raten nur. Sie könnten etwas bekommen, das funktioniert, aber es könnte auch einen besseren Weg geben. –

+0

Stackoverflow schneidet den Code ab, wenn ich versuche, ihn einzufügen. Der Code ist nur die grundlegende Repeater-Steuerung, nichts Schickes. –

+1

Vereinfachen Sie den Code, um den Punkt zu vermitteln, ohne die ganze Sache zu veröffentlichen –

Antwort

4

Probieren Sie etwas wie dies in dem Code hinter

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); 
     } 
    } 

und so etwas wie dies in der aspx Seite

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

Man könnte dies eine Menge verschiedener Möglichkeiten und je nachdem, was löst Ihre Repeater muss aussehen wie oder die Daten, die Sie dorthin senden, gibt es keine beste Antwort. Hier ist ein Hack-Workaround, der die Daten auswertet und sie mit der richtigen Farbreaktion vergleicht.

In der Artikelvorlage des Repeaters Surround von einem Div.

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

und im Code hat hinter eine Funktion

public string GetBG(string demo) 
    { 

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

Dies ist kein sehr guter Weg, es zu tun und ziemlich verschwenderisch zu entscheiden. Eine onDataBind-Funktion wäre der bessere Weg zu gehen, wollte nur noch einen anderen Weg zeigen, um diese Aufgabe zu erfüllen.

5

Verwenden Sie die <% #%> Syntax Datenbindung innerhalb der ItemTemplate bedingte Formatierung zu tun:

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