Tableau dynamique + enregistrement

Résolu
Ishizaki Messages postés 51 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 4 décembre 2008 - 17 avril 2008 à 15:05
Ishizaki Messages postés 51 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 4 décembre 2008 - 21 avril 2008 à 11:09
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

Ishizaki Messages postés 51 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 4 décembre 2008
21 avril 2008 à 11:09
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...
3
Ishizaki Messages postés 51 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 4 décembre 2008
17 avril 2008 à 15:16
TableEmployee est en fait TablePerson ^^.

Merci de votre aide
je quote tu quotes...
0
Rejoignez-nous