Одна вещь, которую вы могли бы сделать быстро, это преобразовать DataSource в класс отчета. Затем вы можете переместить логику для включения / выключения в этот класс (то есть, отдельное свойство для кнопки) и обновить сетку, чтобы просто проверить соответствующее свойство для ссылки / кнопки.
Это, по крайней мере, перемещает логику из файла aspx куда-то, где ее легче поддерживать / просматривать.
Например:
grid.DataSource = MyReportClass.GetReport();
Где
public MyReportClass
{
public string Name { get; set; }
public string EnableLink1 { get { //logic here } }
public string EnableButton3 { get { ///logic here } }
public static List<MyReportClass> GetReport()
{
// get the data
}
}
тогда aspx становится
<gridview id="grid" runat="server" ... >
...
<asp:templatefield headertext="Link1" ><itemtemplate>
<asp:linkbutton id="l1" runat="server" ...
visible='<%# !(bool)DataBinder.Eval(Container.DataItem, "EnableLink1") %>'
/>
</itemTemplate></asp:templatefield>
...
</gridview>