Récupérer un textbox dynamique

cs_plateau Messages postés 19 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 3 juillet 2008 - 6 mai 2008 à 21:32
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 7 mai 2008 à 20:43
en fait j'ai un formulaire dans une page aspx

je clique sur un bouton qui generer des textbox dynamique

cette partie j'arrive bien à la faire, mais quand j'arrive à la récupération ca bloque,

j'ai associé la création des text box à un bouton et j'ai associé la  Récupération à un autre bouton dans la meme page aspx,

protected void button_generate_num_athor(object sender, System.EventArgs e)
{

lblnbAuthor.Text = ddlAthorsNumber.SelectedValue;

int x = Int32.Parse(lblnbAuthor.Text);

for (int i = 1; i < x; i++)
{
TableRowRow_Contact= newTableRow();
   TableCell Cell_Contact = newTableCell();

   Row_Contact.Cells.Add(Cell_Contact);
   tableContact.Rows.Add(Row_Contact);

   TextBox
textbox_Contact = newTextBox();

   textbox_Contact.ID =
String.Format("textbox_Contact{0}", i);

   textbox_Contact.Width = 150;

   textbox_Contact.Text =
String.Format(" ", i);

   Cell_Contact.Controls.Add(textbox_Contact);

   lPnlGrp.Controls.Add(textbox_Contact);

 }

maintenant pour récupérer je ne sais pas comment faire

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
6 mai 2008 à 21:55
Salut

Il n'est pas conseillé d'utiliser des controles de maniere dynamique.

Il existe des controles fait pour
Table
Datalist
Listview
Repeater
Gridview

Il faut affecter la datasource
et faire un databind()

Sinon pour repondre la question

(tableContact.FindControl("
textbox_Contact1")) as textbox
ou
(tableContact.rows[0].FindControl("
textbox_Contact1")) as textbox

as toi de gerer les id
avec le databind tu aurais eu
la deuxieme solution pour chaque rows qui fonctionne.

bon coding
0
cs_plateau Messages postés 19 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 3 juillet 2008
7 mai 2008 à 15:15
merci d'avoir répondu

j'ai avancé un peu et puis pour récupérer j'ai créé  un bouton dans la meme page aspx

le code .cs est le suivant:

public
void Button1_Click(
object sender, System.
EventArgs e){

      foreach (
Control htmlform
in Page.Controls)      {

            foreach (
Control table
in htmlform.Controls)            {

               foreach (
Control row
in table.Controls)               {

                     foreach (
Control cell
in row.Controls)                     {

                           foreach (
Control control
in cell.Controls)                              {

                                    int x =
Int32.Parse(lblnbAuthor.Text);

                                    
for (
int i = 1; i < x; i++)                                          {

                                          TextBox tb = (
TextBox)tableContac
.FindControl("textbox_Contact1" + i);                                          lblRecu.Text = tb.Text;

                                          }

                        }

               }

         }

   }

}

les foreach c'est pour aller chercher les control dans chaque row et chaque cell de la table.

l'erreur qu'il me de donne maintenant:  System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

avez vous une idéé

merci
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 mai 2008 à 15:47
Sur quelle ligne le probleme est-il.?

Menu > Debug > Exeption > CLR Exception
Tu coches la cache throw
et tu auras la réponse.

Il y a un element qui est a null mais lequel ??

Surement tb pourquoi ??

Pourquoi tu scanne tous les tables de la page,
pourquoi ne pas commencer redirectement a tableContac
la performance et la maintenanbilité sera meilleure

 foreach (
Control row
in
tableContac
.Controls)               {

Bon coding
0
cs_plateau Messages postés 19 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 3 juillet 2008
7 mai 2008 à 15:55
effectivement l'erreur est dans lblRecu.Text = tb.Text;

aucune idée pourquoi ? pourtant il me semble que le code le créant il est bon , non?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 mai 2008 à 20:43
Tu n'aurais pas le 1 en trop dans le nom du controle

dans ta boucle tu as 10 - 11 -12 -13 .... 124-125
Le 1 prefixe tout tes controles
0
Rejoignez-nous