2016-06-06 2 views
0

Не могли бы вы помочь мне с этим: Я создаю таблицу некоторых элементов со своими свойствами и значениями (в течение некоторого времени). Похоже:Изменить цвет текста в ячейке таблицы ASP.NET (по значению)

Table

Я хочу изменить цвет этих значений, позволяет сказать, что 0 будет зеленый 1 синий 2 красный.

DataView dv = new DataView(grid); 
myGridView.DataSource = dv; 
myGridView.DataBind(); 

Если мне нужно уточнить, пожалуйста, скажите мне, что я не PRO. Я не знаю, где я могу управлять ячейкой. Я также хотел бы добавить мышь над текстом (чтобы он отображал дату появления текущего значения). Может быть, какая-то функция/javascript ...?

+0

р у ищет яваскрипт решение делать вещи? затем попробуйте http://stackoverflow.com/questions/12937122/looping-through-aspgridview-data-using-javascript – navnit

ответ

0

Очень простой и легкий вес раствора с помощью JQuery: за

Код:

public partial class GridViewCellColourChange : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!Page.IsPostBack) 
     { 
      gvItems.DataSource = this.GetData(); 
      gvItems.DataBind(); 
     } 
    } 

    private IEnumerable<Item> GetData() 
    { 
     var item1 = new Item { item = "itm1", prop1 = "23", prop2 = "asd", prop3 = "23d", values = "0-0-0-0-0" }; 
     var item2 = new Item { item = "itm2", prop1 = "43", prop2 = "asd", prop3 = "23d", values = "0-0-0-0-0" }; 
     var item3 = new Item { item = "itm3", prop1 = "53", prop2 = "asd", prop3 = "23d", values = "0-0-0-0-0" }; 

     return new List<Item> { item1, item2, item3 }; 
    } 
} 

public class Item 
{ 
    public string item { get; set; } 
    public string prop1 { get; set; } 
    public string prop2 { get; set; } 
    public string prop3 { get; set; } 
    public string values { get; set; } 
} 

.aspx:

<head runat="server"> 
    <title></title> 
    <script src="https://code.jquery.com/jquery-1.12.2.min.js"></script> 
    <script> 
     $(function() { 
      $("#gvItems > tbody > tr").each(function (i, row) { 
       var children = $(row).children(); 
       for(var i=0; i < children.length;i++) 
       { 
        var child = children[i]; 
        if(child.localName == "td") 
        { 
         var text = $(child).text(); 

         if(text == "23") 
         { 
          $(child).css("background-color", "red"); 
         } 
         else if(text == "43") 
         { 
          $(child).css("background-color", "green"); 
         } 
        } 
       } 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <asp:GridView ID="gvItems" runat="server"></asp:GridView> 
     </div> 
    </form> 
</body> 

Выход:

Change grid view cell colour based on value

0

Элемент управления gridview можно использовать с Свойство OnRowDataBound для привязки определенных свойств к каждой ячейке/строке.

+0

Спасибо за быстрый ответ. Я пытаюсь с этим, я могу изменить цвет всего текста. Моя проблема в том, что я хочу иметь разные цвета текста в одной ячейке. – igor256

+0

, для этого найдите текст ячейки в OnRowDataBound и сделайте все, что хотите, используя..if (e.Row.RowType == DataControlRowType.DataRow) { string cellText = e.Row.Cells [1] .Text.ToString (); } –

+0

Только для одной ячейки вы можете установить несколько цветов для контента. –

0

Использование OnRowDataBound Событие GridView, вот образец

protected void GridCompany_OnRowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     foreach (GridViewRow gridViewRow in GridCompany.Rows) 
     { 
      if (gridViewRow.RowType == DataControlRowType.DataRow) 
      { 
       if (gridViewRow.Cells[6].Text.ToUpper() == "TRUE")// find your cell value and check for condition 
       { 
        // put here your logic 
       } 
       else 
       { 
        // put here your Else logic 
       } 
      } 
     } 
    } 
Смежные вопросы