Kattintható sorú GridView

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?


Dávid Zoltán

Dávid Zoltán Mérnök Informatikusként végeztem a BME-n, jelenleg webfejlesztéssel és gépi tanulással foglalkozom.

2007.11.03. 21:30:26 | Permalink | Hozzászólások: 5 | Tárgyszavak: , ,


  • SharePoint_AdminContent adatbázis neve

    Balássy György (MS RD, ASP.NET MVP, MCTS) "Lustaság - fél egészség, de te légy teljesen egészséges." - tartja a graffiti. Úgy látszik ezt az elvet követte az a félkegyelmű, aki Redmondban kitalálta, hogy ahelyett, hogy kitenne még egy szövegdobozt a telepítő alkalmazás felhasználói felületére, bedrótozza az adatbázis nevét a kódba. Legalábbis lényegében ezt csinálta, amikor belekódolt egy GUID-ot a SharePoint Admin Content adatbázis nevébe. Annak az egy paraméternek biztosan túl nagy lett volna a TCO-ja, ezért inkább a rendszergazdá... Tovább »
  • Sor megszerzése GridView RowCommandnál

    Balássy György (MS RD, ASP.NET MVP, MCTS) Ha egy GridView valamelyik oszlopába gombokat teszünk, akkor a RowCommand esemény nagyon praktikus, mert az eseménykezelő CommandName és CommandArgument tulajdonságai segítségével könnyen meg tudjuk vizsgálni, hogy melyik sorban, melyik gombra kattintott a felhasználó. A CommandArgument tulajdonságot általában az adott rekord kulcs oszlopához szoktuk kötni, hogy az adott rekordra könnyen tudjunk hivatkozni. De mi van akkor, ha a GridView adott sorára is hivatkozni szeretnénk? Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások


Dávid Zoltán Dávid Zoltán  (2007.11.14. 12:26:00)

Koszi!

Balássy György (MS RD, ASP.NET MVP, MCTS) Balássy György (MS RD, ASP.NET MVP, MCTS)  (2007.11.08. 0:07:20)

Bocs, de nem bírom ki, hogy ne másoljam ide a linket, hogy valaki már erre a kliens oldali hover és kattintás színezésre is írt AJAX Control Toolkit Extendert: http://mattberseth.com/blog/2007/10/gridviewcontrolextender_row_mo.html Szép tiszta :)

Dávid Zoltán Dávid Zoltán  (2007.11.05. 14:37:21)

Kattintasra valtasz szint szerveroldalon, vagy javascriptbol kliensoldalon ha fole megy az eger?

mohojojo mohojojo  (2007.11.04. 13:47:45)

Background

mohojojo mohojojo  (2007.11.04. 13:47:32)

Énis így szoktam :) Hasonlóképpen hogy váltsa a BackGrond colort ha rámutatok egy sorra ;)