Das neue Gridview Control unterstützt die Auswahl einer Row nur mit einer Command Column. Das heist ein Button, Hyperlink oder Bild wird verwendet um den Datensatz zu selektieren. Out of the Box ist es nicht möglich per Click auf die Zeile diese zu selektieren.
![](data/alle/gridviewrowselect.jpg)
Grundsätzlich benötigt man für eine derartige Funktion Jscript Events, genauer gesagt OnMouseOver und OnMouseOut. Dabei wird jeweils Code ausgeführt der die Hintergrundfarbe verändert. Diese Events werden
für die gesamte Reihe als TR benötigt. Um Zugriff auf dei Reihe zu erhalten bietet sich das RowCreated
Event an, das in den E Args die Eigenschaft Row besitzt. So kann man dann die Attribute als Key, Value Paar anhängen.
e.Row.Attributes.Add("onMouseOver","this.style.background='silver'") |
Daraus entsteht im Browser dann:
<tr onMouseOver="this.style.background='silver'"
Mit der gleichen Methode wird dann das eigentliche Click des Benutzers ausgewertet. Mit der JScript Funktion ?navigate? wird vom Client der Aufruf einer neuen Seite angestoßen und dabei die ID des Datensatzes übergeben.
Das vollständige Code Schnippsel:
<script runat="server"> Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) e.Row.Attributes.Add("onMouseOver", this.style.background='silver'") e.Row.Attributes.Add("onMouseOut", "this.style.background='white'") e.Row.Attributes.Add("onClick", "window.navigate('detail.aspx?id=" + e.Row.DataItemIndex.ToString() + "')") End Sub </script> |