Mam tabelę GridView w której muszę wyświetlić kolumny: CommandField z opcją usuwania, BoundField z datą i pozostałe z danymi.
Chciałbym, aby opcja edycji była widoczna jedynie dla wierszy, w których data jest dzisiejsza lub nowsza. Jak to najlepiej zrobić?
Korzystając z PageLoad GridView, czy przerobić pierwszą kolumnę (CommandField) na TemplateField i dla niej w PageLoad?
0
0
Zrób pomiar szybkości obu sposobów, a rozwiązanie znajdziesz.
0
Przyciski zrób jako TemplateField zamiast CommandField a w środku daj ImageButton. Ustaw w ImageButton property Visible odpowiednio do tego co chcesz osiągnąć np:
Visible='<%# ShowDeleteButton(Eval("DT"))%>'
i w pliku CS utwórz taką funkcję odpowiedzialną za wyznaczenie widoczności przycisku
0
Zrobiłem to tak:
using System.Globalization;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
var dtfi = new DateTimeFormatInfo { ShortDatePattern = "dd.MM.yyyy", DateSeparator = "." };
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (Convert.ToDateTime(e.Row.Cells[1].Text, dtfi) < DateTime.Today)
{
e.Row.Cells[0].Controls[0].Visible = false;
}
}
}
Co sądzicie? ;)
0
ja stawiam na rozwiązanie maciejmt