2011-01-13 14 views
1

So habe ich eine <asp:Gridview> und in meiner C# -Datei, setze ich die Datenquelle zu einer Datenbanktabelle und tun .DataBind().ASP.NET GridView kann Spalten nicht verbergen

Ich möchte jedoch eine Spalte in der Tabelle basierend auf einer booleschen Variable ausblenden.

Etwas wie folgt aus:

gridview.Columns['Field5'].Visible = false; 

Oder vielleicht:

int c = gridview.Rows.Count(); 
for(int i = 0; i < c; i++){ 
    gridview.Rows['Field5'].Remove(); 
} 

Vielleicht kann ich es nicht unsichtbar machen, aber ich bin sicher, ich kann zumindest eine Schleife durch und entfernen Sie alle Zeilen der damit verbundenen Spalte "Feld5". Ich weiß nicht, wie ich das machen soll.

Hat jemand vielleicht einen richtigen Link zur Verwendung der GridView-Klasse und wie alle Methoden verwendet werden sollen, weil es nicht klar ist, vielleicht nicht von Microsoft geschrieben?

Es tut uns leid, wenn dies zu einfach ist, scheint das Internet eine Menge C# -Dokumentation zu fehlen (oder vielleicht ist es nur mit zu vielen unbrauchbaren ASP.net-Informationen vollgestopft).

+0

Sie haben eine in 'und' in C# Datei? –

+0

StackOverflow konvertiert HTML-Tags anscheinend nicht in HTML-Entitäten und entfernt sie stattdessen. – Dexter

+0

"scheint das Internet eine Menge C# -Dokumentation zu haben" - oder? Ich habe noch nie eine besser dokumentierte Sprache online gesehen! :-D –

Antwort

1

In Ihrem Fall, dass Sie eine Schleife durch gridview und setzen Zellen sollten Sie Visible=false

 foreach (GridViewRow gvr in gv.Rows) 
     { 
      //here specify cell you want to hide 
      //also you may put any conditions 
      gvr.Cells[0].Visible = false; // Hide cell 
     } 

Um Spalte zu verstecken verstecken Sie wie das gehen sollte:

 //here specify column you want to hide 
     grv.Columns[0].Visible = false; // Hide column 

Überprüfen Sie auch diesen Artikel http://www.codeproject.com/KB/webforms/Datagrid_Col_Example.aspx

6

Kein Problem, der Trick besteht darin, dass Sie die Spalte nach ihrem Index referenzieren müssen, nicht nach ihrem Namen.

grid.Columns[1].Visible = false; 
0

Die Gitteransicht ist in Ordnung, wenn Sie nur quickl wollen Sie zeigen einige Daten an, müssen diese jedoch nicht ändern. Wenn Sie es jedoch anpassen möchten, ist es unpraktisch. Es ist einfacher und schneller, die Tabelle dynamisch in Ihrem Codebehind zu erstellen und Sie erhalten die gesamte Kontrolle, die Sie benötigen.

Überprüfen Sie die erste Antwort auf diesen Beitrag aus: How to show pop up menu from database in gridview on each gridview row items?

1

fand ich eine gute Methode, um so etwas zu tun.

((DataControlField)gridView.Columns 
      .Cast<DataControlField>() 
      .Where(fld => (fld.HeaderText == "Title")) 
      .SingleOrDefault()).Visible = false; 

Ich fand es unter Link

GridView Hide Column by code