Das teuflische am Gridview ist, das man nie genau weis was eigentlich am Ende für eine Control Hirarchie erzeugt wird. Die einfache Aufgabe, den Kopf Text der Spalten auszulesen gerät so schnell zur Sisiphus Aufgabe. Je nachdem ob Sortieren erlaubt ist oder editierten sieht der verschachteltete Aufbau mit Controls komplett anders aus.
Folgendes Beispiel verwendet ein Gridview das sowohl sortieren als auch editieren unterstützt.
Die Kopfzeile bekommt man noch relativ einfach mit
Dim row As GridViewRow = GridView1.HeaderRow |
Dann kann man durch die Cell Collection durchiterieren.
Dim cl As TableCell For Each cl In row.Cells
.. |
Jetzt wirds aber interesannt. Eigentlich hat cl nun eine Eigenschaft Text. Diese ist auch gefüllt wenn keine untergeordneten Controls vorhanden sind. Dies ist in der ersten Spalte der Fall, die ja die Überschrift für die Edit Column beinhaltet und da steht nichts drin (genauer ein ).
Bei der nächsten Spalte wirds noch ein wenig komplexer da dort ein Hyperlink vorhanden sein wird für die sortierung. Entsprechend muss das dort per Item oder Findcontrol identifizierte Steuerelement noch in ein Hyperlink Objekt gecastet werden um an die Eigenschaft Text heranzukommen.
Hier nun das komplette Beispiel
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim row As GridViewRow = GridView1.HeaderRow Dim cl As TableCell For Each cl In row.Cells If cl.Controls.Count() > 0 Then Response.Write(CType(cl.Controls(0), LinkButton).Text) End If Next
End Sub |