Ukrycie opcji Delete dla niektórych wierszy GridView

0

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1