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 :

Event et postback


Sujet :

ASP.NET

Vue hybride

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut Event et postback
    Bonjour,

    J'ai un petit problème

    Il est lié à un post précédent : http://www.developpez.net/forums/d98...le-rows-count/

    Voici le code aujourd'hui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      <div class="P_SaisieC">
                                <asp:Table ID="Tab_CS" runat="server" CssClass="Centre_AspTable" >
                                    <asp:TableRow>
                                        <asp:TableCell><asp:Label ID="LB_CS_det" runat="server" Text="Contrat de service" width="130" CssClass="REP_Titre"></asp:Label></asp:TableCell>  
                                        <asp:TableCell><asp:Label ID="LB_val" runat="server" Text="Valeur Accordée" width="130" CssClass="REP_Titre"></asp:Label></asp:TableCell> 
                                        <asp:TableCell><asp:Label ID="Label3" runat="server" Text="Périodicité" width="130" CssClass="REP_Titre"></asp:Label></asp:TableCell> 
                                        <asp:TableCell><asp:Label ID="Label7" runat="server" Text="Mode de Facturation" width="130" CssClass="REP_Titre"></asp:Label></asp:TableCell> 
                                        <asp:TableCell><asp:Label ID="Label8" runat="server" Text="Mode de règlement" width="130" CssClass="REP_Titre"></asp:Label></asp:TableCell>
                                    </asp:TableRow>
                                </asp:Table>
                             </div>
    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
    protected void Page_Load(object sender, EventArgs e)
            {
            []    
                    if (IsPostBack == false)
                    {
                        if (Request["type"] == "CLOC")
                        {
                            []
     
                            if (test)
                                Tab_CS.Visible = true;
                            else
                                Tab_CS.Visible = false;
     
                        }
     
                        Session["TEMPO"] = null;
                    }
                    else
                    {
                        if (Session["TEMPO"] != null)
                        {
                            bool isfirst = true;
                            foreach (TableRow _row in (TableRowCollection)Session["TEMPO"])
                            {
                                if (!isfirst)
                                    Tab_CS.Rows.Add(_row);
                                else
                                    isfirst = false;
                            }
                        }
                    }
                }
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     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");
     
                CL_CS _cs = new CL_CS(int.Parse(_HF_id.Value),_TB_CS.Text);
                _cs.LISTER_TERMESFACT();
                _cs.RECUP_LISTE_MODREGL();
                _cs.LISTER_PERIODICITES();
     
                if (_CHB_CessionOK.Checked)
                {
                    Tab_CS.Rows.Add(new TableRow());
     
                    //Nom
                    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);
     
                    // Valeur
                    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;
                    _tb.AutoPostBack = true;
                    _tb.TextChanged += EVENT_ITM;
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells[1].Controls.Add(_tb);
     
                    //  Periodicité
                    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 = _cs.lesPeriodicites;
                    _lst_per.DataTextField = "nomperiod";
                    _lst_per.DataValueField = "idPeriod";
                    _lst_per.DataBind();
                    if(_lst_per.Items.Count == 0)
                        _lst_per.Items.Insert(0, "Aucun");
                    else
                        _lst_per.Items.Insert(0, "");
     
                    _lst_per.ID = "LST_period_" + _TB_CS.Text;
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells[2].Controls.Add(_lst_per);
     
     
                    // Mode de facturation
                    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 = _cs.lesTermesFact;
                    _lst_mod.DataTextField = "termfac";
                    _lst_mod.DataValueField = "idtermefact";
                    _lst_mod.DataBind();
                    if (_lst_mod.Items.Count == 0)
                        _lst_mod.Items.Insert(0, "Aucun");
                    else
                        _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);
     
                    // Mode reglement
                    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 = _cs.lesModRegl;
                    _lst_rgl.DataTextField = "nom";
                    _lst_rgl.DataValueField = "idmod";
                    _lst_rgl.DataBind();
                    if (_lst_rgl.Items.Count == 0)
                        _lst_rgl.Items.Insert(0, "Aucun");
                    else
                        _lst_rgl.Items.Insert(0, "");
                    _lst_rgl.ID = "LST_regl_" + _TB_CS.Text;
                    Tab_CS.Rows[Tab_CS.Rows.Count - 1].Cells[4].Controls.Add(_lst_rgl);
     
                    Tab_CS.Visible = true;
                    Session["TEMPO"] = Tab_CS.Rows;
                }
     
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      protected void EVENT_ITM(object sender, EventArgs e)
            {
                [...]
                SAVE(control,value);
            }
     
            #endregion
    Voila mon problème maintenant c'est qu'il y à des postback dans tout les sens et je suis perdu, je ne sais plus trop comment faire. Vous l'avez compris je veux sauvegarder les valeur de chaque control contenu dans la table.

    PS : Seul la TB est codé pour le moment c'est normal ^^

    Si vous avez une idée cela m'aiderai grandement.

  2. #2
    Membre expérimenté
    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
    Par défaut
    Pourquoi vouloir à chaque exécuter qqch dans le textChanged des textbox ?
    C'est ça qui cause les postbacks à chaque fois.

    Que veux tu faire exactement ?

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Alors en fait lorsque je rajoute un second élément dans ma table tout ce passe bien à priori (en tout cas au niveau de l'affichage) mais lorsque je click sur mon bouton de validation et que je regarde en débug ce que contient ma table, jen 'ai que 2 élément (la premier ligne qui sont les titres de colonne, et mon premier élément). Ma troisième ligne de la table visible à l'écran n'est pas utilisable au niveau du code, il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		Tab_CS.Rows[2].Cells[1].Controls[0]	'Tab_CS.Rows[2]' a levé une exception de type 'System.ArgumentOutOfRangeException'	System.Web.UI.Control

Discussions similaires

  1. association Cross PostBack Page et Event handlers impossible
    Par blaise.braye dans le forum ASP.NET
    Réponses: 4
    Dernier message: 04/04/2010, 01h29
  2. event onunload et postback
    Par mapmip dans le forum ASP.NET
    Réponses: 1
    Dernier message: 05/03/2009, 19h58
  3. [C#] Postback à la place de onclick avec Entrée
    Par Anomaly dans le forum ASP.NET
    Réponses: 7
    Dernier message: 24/09/2004, 14h35
  4. Réponses: 4
    Dernier message: 21/05/2004, 09h13
  5. Accès à une case d'un DBGrid dans l'event OnKeyDown
    Par fba dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/03/2004, 12h48

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