DevTrain

Autor: Hannes Preishuber

Gridview Header Spalten nachträglich lesen oder verändern

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


Erfasst am: 18.05.2006 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=978
© Copyright 2003 ppedv AG - http://www.ppedv.de