Az ASP.NET GridView-t vagy szereti az ember, vagy nem, én mindenesetre használom. Egész jó listázáshoz, vagy master-detailhez. Utóbbihoz valahogy Select eseményt kell tudni kiváltani a GridView egy során. Normális esetben erre egy Button vagy LinkButton elég. Felmerült, hogy lehet megoldani egy adatsor kiválasztását úgy, hogy ahhoz bárhol lehessen kattintani a soron. Végül ezt találtam a legszebbnek:
protected void gridView_RowDataBound( object sender, GridViewRowEventArgs e )
{
// egesz sorra kattintas esemenykezeloje
if( e.Row.DataItemIndex < 0 )
return;
e.Row.Attributes.Add( "onMouseOver", "this.style.cursor='hand'" );
// ha kattintanak a soron akkor az javascriptbol elvagja a szerveroldali 'Select' esemenyt
e.Row.Attributes.Add( "onClick", ClientScript.GetPostBackEventReference( gridView, "Select$" + e.Row.RowIndex.ToString() ) );
}
Szegény a teljes sorra ráteszi a postBack-es javascriptet. A "Select$" + e.Row.RowIndex.ToString() pedig megmondja, hogy melyik soron történt a kattintás. A szerveroldali eseménykezelőt pedig ugyanőgy használom, mint különben:
protected void gridView_SelectedIndexChanged( object sender, EventArgs e )
{
string id = ( string ) this.gridVehicles.SelectedDataKey.Value;
// ...
}
Van szebb megoldásotok?