2012-06-13 9 views
18

E 'possibile mostrare/nascondere una colonna GridView in fase di esecuzione per nome?Nascondere una colonna GridView per nome in fase di runtime in ASP.Net

posso farlo tramite l'indice di come la seguente:

gridReviews.Columns[4].Visible = false; 

Tuttavia mi piacerebbe fare quanto segue:

gridReviews.Columns["Name"].Visible = false; 

Qual è il modo migliore per farlo?

+0

sei voler utilizzare il testo di intestazione o il nome della colonna/proprietà nella dati sottostante? – David

+0

Hai sollevato un buon punto che potrebbe fermarmi. Il testo dell'intestazione può cambiare in base ai dati della griglia, quindi non posso utilizzarlo. Tuttavia la colonna che devo nascondere è un TemplateField che non è associato a un'origine dati e non sembra avere un ID. – Sun

risposta

17

È possibile utilizzare il seguente codice per esso:

foreach (DataControlField col in gridReviews.Columns) 
     { 
      if (col.HeaderText == "Name") 
      { 
       col.Visible = false; 
      } 
     } 
0

è possibile accedere al GridView dal nome della colonna indirettamente se è possibile accedere ai dati che hai usato per legare il GridView e le colonne GridView sono nello stesso ordine come DataTable (e AutoGenerateColumns = false):

//Make ID column invisible by column name 
gv.Columns[dt.Columns[ID].Ordinal].Visible = false;