2009-05-26 11 views
1

J'ai essayé tout ce que je sais pour changer la couleur d'une rangée dans un contrôle asp: repeater. Ce que j'essaie de faire est la suivante: Basé sur une valeur, je veux être en mesure de définir la couleur d'un enregistrement dans le contrôle du répéteur. J'ai essayé les balises DIV, je ne peux pas le faire fonctionner. Comment je m'y prend? ThaksContrôle de répéteur ASP.Net

+2

Partagez votre code? Il y a plusieurs façons de le faire, et nous devons savoir comment votre code actuel s'accorde ou si nous ne faisons que deviner. Vous pourriez obtenir quelque chose qui fonctionne, mais il pourrait aussi y avoir un meilleur moyen. –

+0

Stackoverflow tronque le code lorsque j'essaie de le coller. Le code est juste le contrôle de base du répéteur, rien d'extraordinaire. –

+1

Simplifiez le code pour faire passer le message sans poster le message –

Répondre

4

Essayez quelque chose comme cela dans le code derrière

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

et quelque chose comme ça dans la page ASPX

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

Vous pourriez résoudre ce beaucoup de façons différentes et selon ce que votre répéteur doit ressembler ou les données que vous envoyez à il n'y a pas de meilleure réponse. Voici une solution de contournement qui va évaluer les données et les comparer pour la réponse de couleur appropriée.

Dans le modèle d'article du répéteur l'entourer d'un div.

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

et dans le code ont derrière une fonction de décider

public string GetBG(string demo) 
    { 

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

Ce n'est pas une très bonne façon de le faire et tout à fait inutile. Une fonction onDataBind serait la meilleure façon de procéder, je voulais juste montrer une autre façon d'accomplir cette tâche.

5

Utilisez le <% #%> syntaxe de liaison de données dans le ItemTemplate pour faire la mise en forme conditionnelle:

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