Sor megszerzése GridView RowCommandnál

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?

Sajnos az eseménykezelő nem tartalmaz ilyen paramétert és ha teljesen egyedi eseményünk van, akkor ezt a GridViewból sem tudjuk kinyerni. Választhatjuk azt a megoldást, hogy a hagyományos Buttonból származtatunk egy saját osztályt, amit kibővítünk egy egyszerű RowIndex tulajdonsággal:

  public int RowIndex
  {
    get
    {
      object obj = this.ViewState[ "RowIndex" ];
      return obj != null ? (int) obj : -1;
    }
    set
    {
      this.ViewState[ "RowIndex" ] = value;
    }
  }

A következő lépés, hogy a GridViewban saját template oszlopot használunk és ott adatkötéssel beállítjuk ezt a tulajdonságot:

  <asp:TemplateField>
    <ItemTemplate>
      <Demo:MyButton runat="server" 
        Text="Csináld!" 
        CommandArgument='<%# Eval("ID") %>'
        RowIndex='<%# Container.DataItemIndex %>' />
    </ItemTemplate>
  </asp:TemplateField>

A gridhez tartozó RowCommand eseménykezelőben így már könnyen megkaphatjuk a sor indexét:

  private void OnRowCommand( object sender, GridViewCommandEventArgs e )
  {
    int rowIndex = ( e.CommandSource as MyButton ).RowIndex;
    // GridView.Rows[ rowIndex ] ...     
  }

Innen kezdve a GridView.Rows gyűjteményt megindexelve könnyen el tudjuk érni a kívánt sort és például megváltoztathatjuk a háttérszínét, hogy visszajelzést adjunk a felhasználónak.



Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2010.09.09. 20:41:27 | Permalink | Hozzászólások: 0 | Tárgyszavak:


  • IIS 7 és a Home Editionök

    Balássy György (MS RD, ASP.NET MVP, MCTS) Érdekes módon lehet IIS 7-et telepíteni a különböző Vista és Windows 7 Home Editionökre, csak éppen az eredmény nem mindig egy működő webkiszolgáló lesz. Ráadásul nagy különbségek vannak a Home Basic, Starter és Premium változatok között. Tovább »
  • Jeffrey Snoverrel beszélgettem

    Balássy György (MS RD, ASP.NET MVP, MCTS) A TechEd kaliberű rendezvények egyik előnye, hogy az ember személyesen találkozhat azokkal, akik igazán közel vannak a tűzhöz. Ez persze nem minden téma esetén van így, mert vannak termékek, ahol az "evangélisták" tartják az előadásokat, de a kisebb csapatok esetén az előadók gyakran egyben a projekt szakmai agyai is. 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