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 :

<asp:Table> et Table.Rows.count


Sujet :

ASP.NET

  1. #1
    Membre confirmé Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Points : 527
    Points
    527
    Par défaut <asp:Table> et Table.Rows.count
    Bonjour,

    J'ai un petit problème avec une asp:table et je ne comprend pas trop d'où viens problème. J'espère que vous pourrez m'éclairer.

    Voici mon <asp:table> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:Table ID="Tab_CS" runat="server" CssClass="Centre_AspTable" ></asp:Table>
    Je doit la construire à la volée suivant les choix que font les utilisateur dans un répeater juste avant.

    Voila mon code Behind :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    public void VALID_CESS(object sender, RepeaterCommandEventArgs e)
            {
                RepeaterItem _ligne = e.Item;
     
                TextBox _TB_CS = (TextBox)_ligne.FindControl("TB_CS");
                CheckBox _CHB_CessionOK = (CheckBox)_ligne.FindControl("CHB_CessionOK");
                HiddenField _HF_id = (HiddenField)_ligne.FindControl("HF_id");
     
                if (_CHB_CessionOK.Checked)
                {
                    Tab_CS.Rows.Add(new TableRow());
     
     
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells.Add(new TableCell());
                    Label _lb = new Label();
                    _lb.Text = _TB_CS.Text;
                    _lb.CssClass = "REP_ContenuC_spe_G2";
                    _lb.ID = "LB_" + _TB_CS.Text;
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells[0].Controls.Add(_lb);
     
     
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells.Add(new TableCell());
                    TextBox _tb = new TextBox();
                    _tb.CssClass = "REP_ContenuC_spe_G2";
                    _tb.ID = "TB_val_" + _TB_CS.Text;
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells[1].Controls.Add(_tb);
     
     
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells.Add(new TableCell());
                    ListBox _lst_per = new ListBox();
                    _lst_per.CssClass = "REP_ContenuC_spe_G2";
                    _lst_per.Rows = 1;
                    _lst_per.DataSource = datasource1;
                    _lst_per.DataTextField = "text";
                    _lst_per.DataValueField = "value";
                    _lst_per.DataBind();
                    _lst_per.Items.Insert(0, "");
                    _lst_per.ID = "LST_per_" + _TB_CS.Text;
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells[2].Controls.Add(_lst_per);
     
     
     
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells.Add(new TableCell());
                    ListBox _lst_mod = new ListBox();
                    _lst_mod.CssClass = "REP_ContenuC_spe_G2";
                    _lst_mod.Rows = 1;
                    _lst_mod.DataSource = datasource2;
                    _lst_mod.DataTextField = "text";
                    _lst_mod.DataValueField = "value";
                    _lst_mod.DataBind();
                    _lst_mod.Items.Insert(0, "");
                    _lst_mod.ID = "LST_mod_" + _TB_CS.Text;
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells[3].Controls.Add(_lst_mod);
     
     
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells.Add(new TableCell());
                    ListBox _lst_rgl = new ListBox();
                    _lst_rgl.CssClass = "REP_ContenuC_spe_G2";
                    _lst_rgl.Rows = 1;
                    _lst_rgl.DataSource = datasource3;
                    _lst_rgl.DataTextField = "text";
                    _lst_rgl.DataValueField = "value";
                    _lst_rgl.DataBind();
                    _lst_rgl.Items.Insert(0, "");
                    _lst_rgl.ID = "LST_rgl_" + _TB_CS.Text;
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells[4].Controls.Add(_lst_rgl);
     
                    Tab_CS.Visible = true;
                }
     
            }
    Le soucis est que je peux avoir plusieurs rows dans la table je pense que vous avez compris. Sur le premier élément pas de soucis il se rajoute correctement tout est nikel. Le problème arrive lorsque je veux rajouter un second row dans la table, en fait le Tab_CS.Rows.Count ne change pas quelque soit nombre de rows que j'ajoute du coup ça écrase le premiers row.

    J'espère que c'est claire car c'est pas évident à expliqué ^^ si vous avez une idée du problème cela m'aiderais beaucoup.

    Merci d'avance.
    Je fais ce que je dis et je dis ce que je veux .

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 164
    Points : 220
    Points
    220
    Par défaut
    C'est parce qu'à chaque postback, les lignes sont perdues donc tu n'en as toujours qu'une seule.

    Tu dois envisager de les stocker en session ou qqch comme ça

  3. #3
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    En poussant le regard un peu plus loin, le postBack entraîne la ré-instanciation de toutes les contrôles de la page, y compris la page elle même. Cela implique que toutes les données envoyées par le client vers le serveur seront perdues.

    Heureusement qu'il y a plusieurs façon de garder l’état et les données d'un contrôle après le postBack..
    Tout dépend de la stratégie qu'on a besoin de mettre en place, les solutions ne manquent pas: comme disais tontonks il y a les sessions, cookies, ou l'activation de la propriété EnableViewState du contrôle, etc

  4. #4
    Membre confirmé Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Points : 527
    Points
    527
    Par défaut
    Merci

    J'ai carrément pas pensé au postback ici je sais pas pourquoi mais voila. J'ai résolu mon problème grâce aux variables de session

    Merci pour vos réponses
    Je fais ce que je dis et je dis ce que je veux .

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/06/2009, 17h38
  2. Réponses: 11
    Dernier message: 20/11/2008, 18h08
  3. Comparer 2 tables sans checker chaque row
    Par BoOom dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 04/05/2006, 13h21
  4. [C#][VS2k5]Comparer 2 tables sans checker chaque row?
    Par BoOom dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/04/2006, 15h27
  5. [SQL - ASP] existance d'une table
    Par Larson dans le forum ASP
    Réponses: 4
    Dernier message: 02/06/2004, 10h41

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