none
GridView a Session

    Dotaz

  •  

    Dobrý den,

    chtěl bych poradit se dvěma věcmi:

     

    1. Jakým způsobem uložím z GridView hodnotu ze sloupce ID do session?

    2. Proč nepracuje kód (Response.Redirect("Default.aspx?"+Response.QueryString)) v proceduře po updatu FormView?

     

    Děkuji

     

    RG

    16. října 2008 4:32

Odpovědi

  • ad 1)

    Musíte si udělat obsluhu některé události na řádku GridView a v ní získat klíč řádku a zapsat ho do Session. Tedy:

    - musíte mít sloupec ID nastaven jako klíč, třeba DataKeyNames="ID" (v markup kódu)

    - musíte si na řádku udělat něco, co bude způsobovat událost, třeba tam mít CommandField s ShowSelectButton="true"

    - musíte si udělat obsluhu události řádku, v které uděláte potřebné, třeba

     

    Code Snippet

    protected void MyGridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)

    {

        Session["MySessionKey"] = MyGridView.DataKeys[e.NewSelectedIndex].Value;

    }

     

     

     

    Nicméně důrazně varuji před tím, abyste si běžný kontext aplikace předával přes Session. Např. je to naprosto nevhodné pro předávání ID objektu, s kterým se právě pracuje, protože pokud Vám uživatel otevře druhé okno aplikace ve stejné session, tak Vám to celé zabije.

     

    ad)

    Jak nepracuje?

    Každopádně Response.QueryString je divné. Když už, tak Response.Url.Query.

    16. října 2008 8:33
    Moderátor
  • Jinak v 1) si samozřejmě ještě musíte zajistit navázání obsluhy události na událost, tedy třeba v override OnInit dát

    Code Snippet

    MyGridView.SelectedIndexChanging += MyGridView_SelectedIndexChanging;

     

     

    16. října 2008 8:35
    Moderátor
  • No, samozřejmě, toho jsem si ani nevšiml a ještě jsem to opsal.

    I to moje má být Request.Url.Query!

    16. října 2008 13:18
    Moderátor

Všechny reakce

  • ad 1)

    Musíte si udělat obsluhu některé události na řádku GridView a v ní získat klíč řádku a zapsat ho do Session. Tedy:

    - musíte mít sloupec ID nastaven jako klíč, třeba DataKeyNames="ID" (v markup kódu)

    - musíte si na řádku udělat něco, co bude způsobovat událost, třeba tam mít CommandField s ShowSelectButton="true"

    - musíte si udělat obsluhu události řádku, v které uděláte potřebné, třeba

     

    Code Snippet

    protected void MyGridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)

    {

        Session["MySessionKey"] = MyGridView.DataKeys[e.NewSelectedIndex].Value;

    }

     

     

     

    Nicméně důrazně varuji před tím, abyste si běžný kontext aplikace předával přes Session. Např. je to naprosto nevhodné pro předávání ID objektu, s kterým se právě pracuje, protože pokud Vám uživatel otevře druhé okno aplikace ve stejné session, tak Vám to celé zabije.

     

    ad)

    Jak nepracuje?

    Každopádně Response.QueryString je divné. Když už, tak Response.Url.Query.

    16. října 2008 8:33
    Moderátor
  • Jinak v 1) si samozřejmě ještě musíte zajistit navázání obsluhy události na událost, tedy třeba v override OnInit dát

    Code Snippet

    MyGridView.SelectedIndexChanging += MyGridView_SelectedIndexChanging;

     

     

    16. října 2008 8:35
    Moderátor
  • Díky moc za odpověď.

     

    RG

     

    16. října 2008 8:42
  • Omlouvám se mělo tam být Request.QueryString.

     

     

     

    16. října 2008 8:48
  • No, samozřejmě, toho jsem si ani nevšiml a ještě jsem to opsal.

    I to moje má být Request.Url.Query!

    16. října 2008 13:18
    Moderátor