Ishizaki
Messages postés51Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention 4 décembre 2008
-
17 avril 2008 à 15:05
Ishizaki
Messages postés51Date d'inscriptionlundi 6 novembre 2000StatutMembreDerniè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();
int idNumber = 1;
if (this._ListSeizureMask != null)
{
foreach (Person person in this._ListPerson)
{
TextBox textbox = new TextBox();
HtmlTableCell cellTextbox = new HtmlTableCell();
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...