2016-08-17 3 views
0

Мне нужно форматировать 2 целых столбца в моем gridview на основе того, содержит ли ячейка строку «да» или «нет». Я искал всюду, пытаясь найти что-то, что делает то, что я пытаюсь сделать, и не могу найти что-либо на основе строки, только значений int.Условное форматирование по всему столбцу в Gridview

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     GridView gv = (GridView)e.Row.FindControl("GridView2"); 
     var ds = new SqlDataSource(); 
     ds.ConnectionString = ConfigurationManager.ConnectionStrings["HUTDMSConnectionString"].ConnectionString; 
     ds.SelectCommand = "SELECT * FROM textBooks WHERE CourseID = '" + GridView1.DataKeys[e.Row.RowIndex].Value + "' ORDER BY BookTitle"; 
     gv.DataSource = ds; 
     gv.DataBind(); 
    } 
} 

Я знаю, что условное форматирование идет в gridview_rowdatabound события.

То, что я до сих пор:

protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e) { 
     if (e.Row.RowType == DataControlRowType.DataRow && ((e.Row.RowState & DataControlRowState.Edit) == 0)) 
     { 
      var valueFetched = ((TableCell)(e.Row.Cells[3].FindControl("no"))).Text; 
      if (valueFetched == "no") 
      { 
       foreach (var cell in e.Row.Cells) 
        ((TableCell)cell).BackColor = Color.Red; 
      } 
     } 
    } 
+0

Возможный дубликат [Изменение цвета ячейки на разных значениях - Gridview] (http://stackoverflow.com/questions/4427848/change-cell-color-on-different-values-gridview) – MethodMan

ответ

0

Посмотрите на этот пример, чтобы получить какое-то направление. Этот код идет под RowDataBound

if (e.Row.RowType == DataControlRowType.DataRow && ((e.Row.RowState & DataControlRowState.Edit) == 0)) 
{ 
    var valueFetched = ((Label)(e.Row.Cells[1].FindControl("yourControlId"))).Text; 
    if (valueFetched == "1") 
    { 
     foreach (var cell in e.Row.Cells) 
      ((TableCell)cell).BackColor = System.Drawing.Color.LightBlue; 
    } 
} 
+0

в var valueFetched - это e.row.Cells [1], ссылающийся на первую ячейку в каждой строке? – Norque

+0

Да, это индекс, относящийся к ячейке. Вам нужно изменить этот индекс на столбец (индекс начинается с 0); также тип cast - это Label i my example; вам может потребоваться изменить элемент управления, который у вас есть на этой ячейке. – techspider

+0

Добавление того, что я сделал к моему вопросу. Я помещал табличную ячейку для ярлыка, смущенного этим, а также текст FindControl(). Я положил «нет», потому что это то, что я ищу, но меня смущает, если это то, что там происходит или что-то еще. Я пробовал несколько разных способов, и пока ничего не получилось. – Norque

Смежные вопросы