Tableau dynamique + enregistrement [Résolu]

Signaler
Messages postés
51
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
4 décembre 2008
-
Messages postés
51
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
4 décembre 2008
-
Bonjour tout le monde, une petite question concernant la gestion d'un tableau dynamique et l'enregistrement:

Ce que je fais:
1)Création du tableau dynamiquement selon un choix fait dans une dropdownlist(Les 2 premières colonnes sont des cellules sans controle, ensuite des Textbox):
Code:

 private void SetArrayRow(string name, string surname, HtmlTable table)
    {
        HtmlTableRow row = new HtmlTableRow();
        HtmlTableCell cellName = new HtmlTableCell();
        HtmlTableCell cellSurname = new HtmlTableCell();
       

        cellName.InnerText = name;
        cellSurname.InnerText = surname;
      
       

       
        row.Cells.Add(cellSurname);
        row.Cells.Add(cellName);

        int idNumber = 1;
        if (this._ListSeizureMask != null)
        {
            foreach (Person person in this._ListPerson)
            {
                TextBox textbox = new TextBox();
                HtmlTableCell cellTextbox = new HtmlTableCell();
               
               
                cellTextbox.Align = "left";
                textbox.ID = string.Format("TextboxMask{0}", idNumber);
                textbox.CssClass = "textbox";
                textbox.Width = 60;

                cellTextbox.Controls.Add(textbox);
                row.Cells.Add(cellTextbox);

                idNumber++;
            }
        }

2)Récupération des données du tableau après le premier affichage:
Code:

//Dans le OnPreRender, j'assigne ma table à ma propriété.
 protected override void OnPreRender(EventArgs e)
    {
        this.ArrayTable = this.TableEmployee;

        base.OnPreRender(e);
    }

//La propriété stocke la table dans une variable de session
public HtmlTable ArrayTable
    {
        get
        {
            return this.Session["TablePerson"] as HtmlTable;
        }
        set
        {
            this.Session["TablePerson"] = value;
        }
    }

    private HtmlTable _ArrayTable = new HtmlTable();

3) Lors du clic sur un bouton, ici "Enregistrer", je récupère le tableau de ma variable de session:

private string[,] ArrayRecord()
    {
        int rowCount = (int)this.RowCount;//Nombre de lignes
        int cellCount = (int)(this.CellCount);//Nombre de colonnes

        string[,] array = new string[rowCount,cellCount];

       
       
        if(rowCount > 0)
        {
            for (int indexRow = 0; indexRow <= rowCount-1; indexRow++)
            {
                for (int indexCell = 0; indexCell <= cellCount - 1; indexCell++)
                {
                    if (indexCell > 1)//Le nom et le prénom sont deja fixés, ce ne sont pas des textbox, les cellules d'index supérieur ne contiennent que des Textbox
                    {
                        array[indexRow, indexCell] = ((TextBox)this.ArrayTable.Rows[indexRow].Cells[indexCell].Controls[0]).Text;//Textbox
                    }
                    else
                    {
                        array[indexRow, indexCell] = this.ArrayTable.Rows[indexRow].Cells[indexCell].InnerText;//Texte normal
                    }
                }
            }
        }

        return array;
    }

Explication : J'enregistre mon tableau dans une variable de session, car lorsque je veux récupérer le tableau crééer dynamiquement sur le clic du bouton "Enregistrer", les colonnes et lignes créées ne sont pas conservées, vu que HtmlTable n'est pas Serializable, pas de possibilité de le mettre dans un ViewState, alors j'ai utilisé une variable de session. Mais cette variable de session conserve les données lors du premier affichage de la page. Donc elle ne contient pas les données entrées dans les Textbox lors de l'enregistrement. Mon tableau ne me retourne donc que des valeurs vides pour les cellules de mes Textbox.

Je voudrais donc trouver un moyen pour pouvoir réussir à choper le texte de mes Textbox.
je quote tu quotes...

2 réponses

Messages postés
51
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
4 décembre 2008

En fait j'ai recréé un objet Table qui va récupérer les données de mon tableau à chaque création. Ca marche nikel.

je quote tu quotes...
Messages postés
51
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
4 décembre 2008

TableEmployee est en fait TablePerson ^^.

Merci de votre aide
je quote tu quotes...