Ответ 1
очень легко
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drv = e.Row.DataItem as DataRowView;
if (drv["ShouldHighlight"].ToString().ToLower() == "true")
e.Row.CssClass = "highlighted";
}
}
приведенный выше код работает, если вы используете DataTable как DataSource
измените на:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
myClass drv = (myClass)e.Row.DataItem;
if (drv.ShouldHighlight)
e.Row.CssClass = "highlighted";
}
}
только для примера выше при использовании дженериков:
public class myClass
{
public Boolean ShouldHighlight
{ get; set; }
}
если вы работаете с Generics (List, Dictionary и т.д.)
помните:
e.Row.dataItem
всегда возвращает весь объект, в который вы заполняете строку, поэтому отсюда легко манипулировать внешним видом данных на веб-странице.
вы должны использовать событие RowDataBound, которое будет запускаться после того, как данные будут привязаны к объекту строки, но еще не написали код HTML на странице, таким образом вы можете проверить значение ShouldHighlight (я преобразовал в строку, потому что я не знаете тип, вы можете изменить его, если вы знаете его логическое значение).
этот код работает намного быстрее, чем код megakemp, потому что вы не создаете объект List и заполняете весь источник данных для каждой строки...
P.S. возьмите посмотреть на этом веб-сайте, вы можете найти несколько руководств для своего проекта, используя объект GridView