IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

GridView row ID disparait après postback


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut GridView row ID disparait après postback
    Bonjour à tous,

    Dans ma page j'ai un bouton ÉDITER, ensuite j'ai une un GridView et par la suite un ModalPopupExtender.

    Le principe est simple, l'utilisateur clique sur le row de son choix, ensuite il clique sur le bouton ÉDITER en haut ce qui à pour effet d'ouvrir le PopUpExtender.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    modalPopup.Show();
    Lorsque l'utilisateur clique sur le row désiré, je retiens le ID de ce row dans une variable javascript se nommand ligneSelID et je change la couleur de fond.
    Côté serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected void gdvPoids_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
       {
           e.Row.Attributes.Add("onclick", "javascript:SelectionnerLigne('" + e.Row.Attributes.Add("onclick", "javascript:SelectionnerLigne(this," + pID + ");"); + "');");
       }
    }
    Côté client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var ligneSelID;
    function SelectionnerLigne( ligneID )
    {
        var obj = $get( ligneID );
        obj.style.backgroundColor = ...
        ligneSelID = ligne;
    }
    Voilà où est le problème :

    Lorsque le PopUp s'ouvre, la ligne perd sont backgroundColor... Bizarre non ? De plus, j'ai un bouton Annuler qui lui ne fait que fermer le PopPup alors je me suis dit qu'il me fallait re-sélectionner la ligne à l'aide de ma variable LigneSelID qui contient le ID de la ligne sélectionné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ScriptManager.RegisterStartupScript( "Test", "var s = $get(ligneSelID)..." );
    Mais lorsque je fais un $get(ligneSelID) ou document.GetElementByID(ligneSelID), ça me retourne undefined/NULL ! Pourtant la ligne est belle et bien encore visible dans ma grille...

    Est-ce que j'ai louppé quelque chose ?

    PS : Tous ces composants sont dans un UpdatePanel.

  2. #2
    Membre habitué
    Inscrit en
    Mars 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 14
    Par défaut
    Bonjour,
    Peux-tu montrer le Page_Load de ta page où se trouve la GridView qui perd la sélection de la ligne ?

    Si tu veux que tout persiste attention ne pas réinitialiser la grille à chaque fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
            refreshGrille();
        }
    }
     
    private void refreshGrille()
    {
        //DataBind de la grille avec les données.
    }
     
    protected void GridView1_SelectIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        GridView1.SelectedIndex=e.NewSelectedIndex;
        refreshGrille();
    }

  3. #3
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Non, je ne recharge pas la grille à chaque foi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
             SortGridView("");
        }
    }
     
    private void SortGridView(string sortExpression)
    {
        DataView dv = Database....
        dv.Sort = sortExpression;
        myGridView.DataSource = dv;
        myGridView.DataBind();
    }
    Le problème n'était pas cela malheureusement. Mais merci de ton aide quand même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. GRIDVIEW EditRow disparait apres deleterow
    Par HeB91 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 07/12/2012, 16h05
  2. Réponses: 1
    Dernier message: 26/12/2007, 12h06
  3. Réponses: 4
    Dernier message: 21/07/2006, 10h14
  4. Réponses: 11
    Dernier message: 28/04/2006, 11h19
  5. [C#] Se replacer au bon endroit d'un form après PostBack
    Par gael.mases dans le forum ASP.NET
    Réponses: 3
    Dernier message: 16/11/2005, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo