none
GridView Ajout d'une ligne code behind, bug onClick sur un lien RRS feed

  • Question

  • Bonjour,

    Me voici face à un bug bizarre, lorsque je construis mon gridView avec les données, je rajoute une ligne lorsque le type des données ajoutées changent. Je regroupe par type.

    Le problème c'est que dans les données affichées, il y en a une pour laquelle il s'agit d'un LinkButton avec un évènement onClick. Jusque là rien de spécial. Mais lorsque je cliques sur ce lien et que je souhaites récupérer l'attribut présent dans le contrôle, il ne le trouve pas et ne trouve même plus le texte du lien qui vient d'être cliqué ????

    Si j'enlève l'ajout de ma ligne, ça marche bien. Alors y'a t'il quelque chose à faire de spécial pour ajouter une ligne ?

    Voici le code behind que j'utilise pour ajouter ma ligne

    if (e.Row.RowType == DataControlRowType.DataRow)
    {
      Label niveauDoc = (Label)e.Row.FindControl("niveauDoc");
      if (!level.Equals(niveauDoc.Text))
      {
        level = niveauDoc.Text;
        //Construct the header line
        Table t = (Table)gvListe.Controls[0];
        GridViewRow r = new GridViewRow(-1, -1, DataControlRowType.Separator, DataControlRowState.Normal);
        r.ID = "HeaderLevel_Row" + level;
        TableCell c = new TableCell();
        c.CssClass = "cellLevelDoc";
        c.ID = "HeaderLevel_Cell_" + level;
        c.ColumnSpan = e.Row.Cells.Count;
        c.Text = level;
    
        r.Cells.Add(c);
        t.Rows.AddAt(t.Rows.Count-1, r);
      }
    }
    


    Yoann
    mercredi 9 février 2011 13:11

Toutes les réponses

  • Quelqu'un aurait une idée ?
    Yoann
    lundi 7 mars 2011 10:43
  • Toujours pas d'idée ?


    Yoann
    mardi 29 mars 2011 06:55
  • Bonjour,

    A quel moment cette ligne est-elle ajoutée ? J'imagine qu'elle pourrait être ajoutée après l'évènement click (voire pas du tout au postback) et dans ce cas l'évènement click ne trouverait effectivement pas ce contrôle ?

    Une autre approche pourrait être de définir CommandName/CommandArguments pour ce LinkButton ce qui permettrait peut-être de récupérer la commande dans GridView.RowCommand même si ce lien n'a pas été recréé.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mardi 29 mars 2011 17:32
    Modérateur
  • Bonjour,

    Cette ligne est ajoutée à la construction de chaque ligne par DataBinding (évènement onRowDataBound).

    Je ne comprends très bien la suite de votre message, pouvez-vous ré-expliquer votre approche ?


    Yoann
    mercredi 30 mars 2011 06:18
  • Je pensais à http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.gridview.rowcommand.aspx.

    J'imagine que cela reste valable pour les LinkButton (à tester). Cela permettrait de récupérer l'évènement au niveau de GridView_RowCommand et les arguments via CommandArguments ce qui devrait marcher.

    Je pense que le problème est lié au fait que ces contrôles sont recréés dynamiquement et qu'ils ne sont pas encore recréés au moment où l'on tente de les exploiter. Pour aller plus loin il faudrait sans doute créer une maquette la plus simple possible et uniquement destinée à montrer ce problème précis (souvent cela permet aussi de trouver le problème avant d'avoir à la montrer)...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 30 mars 2011 10:46
    Modérateur
  • Bonjour Yoann,

    Est-ce que vous avez résolu votre problème ?

    Merci d’avance de tenir la communauté informée sur la suite de vos démarches.

    Cordialement,
    aelassas.free.fr
    vendredi 28 octobre 2011 22:34
    Auteur de réponse
  • Bonjour,

    Je suis actuellement un peu pris dans d'autres problèmes. Je vais me remettre sur le sujet et créer une maquette afin de voir si mon problème vient de mon projet ou bien de l'implémentation.

    Je vous tiens au courant au plus vite.

     

    Cordialement,


    Yoann
    samedi 5 novembre 2011 15:39