bardzo łatwy
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";
}
}
powyższy kod działa, jeśli używasz DataTable jako źródła danych
zmiana:
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";
}
}
tylko na powyższym przykładzie przy użyciu rodzajowych:
public class myClass
{
public Boolean ShouldHighlight
{ get; set; }
}
jeśli pracujesz z Generics (lista, słownik, itp)
pamiętać:
e.Row.dataItem
zawsze zwraca całego obiektu, które są podczas wypełniania wiersza z, więc łatwo stąd, aby manipulować wyglądem danych na stronie.
powinieneś użyć zdarzenia RowDataBound, które uruchomi się po dołączeniu danych do obiektu wiersza, ale jeszcze nie zapisało kodu HTML na stronie, w ten sposób możesz sprawdzić wartość ShouldHighlight (przekonwertowałem na ciąg, ponieważ robię nie znasz typu, możesz go zmienić, jeśli wiesz, że jest to wartość boolowska).
ten kod działa znacznie szybciej niż kod megakemp bo nie tworzysz obiekt listy i zaludnionych z całego źródła danych dla każdego wiersza ...
PS: wziąć look at this website, można znaleźć kilka tutoriali dla projektu za pomocą GridView obiektowi
Dzięki za to!Dałem tę myśl, ale rozproszyłem ją, ponieważ zakładałem, że HTML już został wygenerowany (przypuśćmy, że powinienem był go naprawdę wypróbować). –
to mój najlepszy sposób na archiwizowanie modyfikacji w dataGridView, pamiętaj, że zawsze możesz uzyskać już umieścił obiekty w szablonie za pomocą (jeśli masz etykietę 1 w ItemTemplate) z: (Etykieta) e.Row.FindControl ("Label1"). Text = dvr.myPropertyText; – balexandre
to nie działa dla mnie = | Podczas debugowania widzę, że klasa jest przypisana, ale nie istnieje w renderowanym HTML – AlfeG