2009-05-26 2 views
1

Я пытаюсь все, что знаю, чтобы изменить цвет строки в asp: репитере. Что я пытаюсь сделать, так это: исходя из значения, я хочу иметь возможность установить цвет записи в элементе управления ретранслятора. Я пробовал теги DIV, не могу заставить его работать. Как мне это сделать? ThaksASP.Net Repeater control

+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

Используйте <% #%> Databinding синтаксиса внутри ItemTemplate сделать условное форматирование:

<asp:Repeater runat="server" ID="rpt"> 
    <ItemTemplate> 
    <div class="<%# Container.ItemIndex % 2 ? "even" : "odd" %>"> 
    </div> 
    <div class="<%# Eval("PropertyOfDataSource") %>"> 
    </div> 
    </ItemTemplate> 
</asp:Repeater> 
Смежные вопросы