ASP.NET - CRÉER UN TABLEAU HTML DYNAMIQUEMENT À PARTIR DU CODE BEHIND
ctof3552
Messages postés28Date d'inscriptionjeudi 20 mars 2003StatutMembreDernière intervention25 avril 2005
-
22 avril 2004 à 14:11
tidiosky
Messages postés9Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention12 février 2012
-
12 févr. 2012 à 18:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
tidiosky
Messages postés9Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention12 février 2012 12 févr. 2012 à 18:34
Vraiment pour moi qui suis un débutant en asp.NEt ton code m'a beaucoup aidé . encore mercii
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 19 juin 2008 à 16:48
Je n'ai poas joué avec ces options de colspan depuis le code Behind
cs_Maroxye
Messages postés177Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention16 octobre 2012 19 juin 2008 à 16:24
Merci Fabrice,
Mais en fait, pour ceux que ça intéresse, lorsqu'on lit un tableau ainsi, il ne faut pas utiliser ceci :
==> If tblDetails.Rows(a).Cells(15).InnerText then...........
==> col0.Attributes.Add("colspan", "20")
On dirait qu'il ne reconnait plus la colonne 15 qui est plutôt une seule colonne(colspan)....
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 19 juin 2008 à 10:33
Bonjour,
En VB.NET les index partent de 1 à X
X étant le nombre d'items dans une liste
En C#, c'est de 0 a X-1
Voila certainement la raison de cette erreur.
Fabrice
cs_Maroxye
Messages postés177Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention16 octobre 2012 18 juin 2008 à 22:10
Merci Fabrice pour ce post!
Je suis cependant confronté à une erreur lorsque je veux lire le contenu de ma table. J'ai l'erreur suivante : Specified argument was out of the range of valid values (Parameter name: index ). Lorsque je liste la colonne 0, ça fonctionne mais dès que je place un compteur pour lister toutes les valeurs, j'ai l'erreur :
For a = 1 To tblDetails.Rows.Count - 1
Session("monTableau") = Session("monTableau") & "-" & tblDetails.Rows(a).Cells(1).InnerText
Next
Quelle serait la meilleure façon de faire une boucle pour liste le contenu de la table créée plutôt?
Merci!
infodevlo
Messages postés4Date d'inscriptionlundi 4 juin 2007StatutMembreDernière intervention 3 janvier 2010 22 mars 2008 à 19:38
merci bc mais j'ai une question si je veux utiliser un lien par parametre dan s macase.innerhtml
comment faire ??
par ex :
macase.Innerhtml="<a href='travail.aspx?numero='
comment faire pour affecter une valeur a ce parametre
CathieMithra85
Messages postés2Date d'inscriptionjeudi 23 novembre 2006StatutMembreDernière intervention21 février 2008 25 févr. 2008 à 20:08
Un gros gros merci!!!!!!
ecthelion_77
Messages postés1Date d'inscriptionmardi 26 septembre 2006StatutMembreDernière intervention24 septembre 2007 24 sept. 2007 à 19:11
Concernant la question de JUL_ARSOE, il est en effet possible de rajouter des infos afin d'appliquer un CSS :
Dim ligne As New HtmlTableRow()
Dim cellule As New HtmlTableCell()
le résultat est :
<tr class="maLigne>
<td class="maCell">
</td>
</tr>
Il suffit ensuite de définir les classes dans le css ;)
Merci à cette source qui m'a bien aidée !!!
leproc
Messages postés81Date d'inscriptionlundi 26 septembre 2005StatutMembreDernière intervention22 octobre 2008 7 août 2007 à 13:18
Oui c'est possible, il suffit juste de créer un controle pour chaque case
/// code tableau en c#
HtmlTableRow MaLigne = new HtmlTableRow();
HtmlTableCell macase = new HtmlTableCell();
HtmlTableCell macase2 = new HtmlTableCell();
HtmlTableCell macase3 = new HtmlTableCell();
//-------------------------------------------
TextBox text = new TextBox();
Button boutton = new Button();
//-------------------------------------------
boutton.Text = "Hello !";
//-------------------------------------------
macase.Width = "10%";
macase2.Width = "100";
//-------------------------------------------
macase.InnerHtml = "WWW.ASPFR.COM";
//-------------------------------------------
macase2.Controls.Add(text);
macase3.Controls.Add(boutton);
//-------------------------------------------
MaLigne.Cells.Add(macase);
MaLigne.Cells.Add(macase2);
MaLigne.Cells.Add(macase3);
//------------------------------------------
Table1.Rows.Add(MaLigne);
snatch13
Messages postés1Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention22 juin 2007 22 juin 2007 à 15:14
Est-il possible de mettre des asp control dans chaque case?
Jul_ARSOE
Messages postés6Date d'inscriptionvendredi 8 juin 2007StatutMembreDernière intervention13 juin 2007 13 juin 2007 à 12:07
Merci pour ce bout de code. il y a juste une chose que je n'ai pas trouvé : comment y appliquer le CSS voulu au élément de la table ?
la seule chose que j'ai trouvé c'est de faire :
MaLigne.Style.value = "text-align:center;background......."
Maligne.Attributes.CssStyle.value = "MaClasseCSS"->ca marche pas
C'est à dire que je suis obligé de recopier tout ce qu'il y a dans la partie du CSS que je veux appliquer, je n'arrive pas à passer le nom de la class CSS. Une solution ?
cs_Azo
Messages postés4Date d'inscriptiondimanche 12 janvier 2003StatutMembreDernière intervention18 février 2009 5 avril 2007 à 13:54
Il te fait recreer ces cellules dans ton page_load ou le page_init, c'ets vrai pourt tout composant créé dynamiquement.
Bon courage,
Emilien
cs_pee
Messages postés2Date d'inscriptionjeudi 27 février 2003StatutMembreDernière intervention14 février 2007 14 févr. 2007 à 11:19
j'arrive à ajouter dynamiquement des cellules à un tableau de la même façon décrite plus haut, ainsi que des composants dans le style checkbox, dropdownlist, ...
Ce qui m'embête, c'est que les cellules qui sont créées dynamiquement uniquement au premier chargement de la page (If Not IsPostBack) disparaissent au premier postback.
quelqun a-t'il une idée du problème.
J'ai bien essayé sans la close "If Not IsPostBack". Dans cette condition pas de problème de visualisation mais si un checkbox a été coché, malgré qu'il réapparaisse coché, si je teste sa valeur, elle est égale à "False" ce qui por moi est logique puisque j'ai rechargé le tableau à l'état d'initialisation.
Drakulv
Messages postés1Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention25 octobre 2006 25 oct. 2006 à 11:37
Merci beaucoup pour cette source !
Je m'en sortais pas avec un Datagrid
LDvper
Messages postés1Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention25 janvier 2005 25 janv. 2005 à 14:28
Il est possible de passer par un webcontrol pour générer un tableau dynamiquement.
Cela permet entre autre de pouvoir insérer des textbox dans les cellules.
' ------------------------------
' Dans le fichier xxx.ASPX
....
' ------------------------------
' Dans le fichier xxx.aspx.VB
...
Protected WithEvents MonTableau As System.Web.UI.WebControls.Table
....
' On ne chargera qu'une seule ligne dans ce tableau
Dim colonne As Integer, ligne As Integer
For ligne = 0 To 0
Dim Maligne As New TableRow()
' On ajoutera 10 case dans ce tableau
For colonne =0 To 9
Dim MaCase As New TableCell()
MaCase.Width = "10%"
MaCase.Text = "WWW.ASPFR.COM"
Maligne.Cells.Add(MaCase)
Next
MonTableau.Rows.Add(Maligne)
Next
-----------------
'Autre exemple avec cette fois les données reprises à partir d'un dataset
Dim Maligne2 As New TableRow
' On ajoutera autant de textbox dans cette ligne que de champs dans la table sélectionnée
For colonne = 0 To ds.Tables(0).Columns.Count - 1
Dim MaCase As New TableCell
Dim tb As New TextBox
tb.ID = "txt_" & ds.Tables(0).Columns(colonne).ColumnName
MaCase.Width = Unit.Percentage(10)
MaCase.Controls.AddAt(0, tb)
Maligne2.Cells.Add(MaCase)
Next
MonTableau.Rows.Add(Maligne2)
....
' ------------------------------
dionysos6868
Messages postés310Date d'inscriptionjeudi 4 septembre 2003StatutMembreDernière intervention 9 juin 20051 22 mai 2004 à 11:38
y aurais t'il moyen de fair la fonction onmouseover et onmouseout car je ne trouve pas
dionysos6868
Messages postés310Date d'inscriptionjeudi 4 septembre 2003StatutMembreDernière intervention 9 juin 20051 27 avril 2004 à 20:03
dsl de cette question j'etais mal reveiller lol
j'ai mal lu le code
merci tout de meme
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 27 avril 2004 à 18:58
Avec le Width de la Case (Cellule).
F___
dionysos6868
Messages postés310Date d'inscriptionjeudi 4 septembre 2003StatutMembreDernière intervention 9 juin 20051 27 avril 2004 à 16:44
Merci beaucoup j'avais poser cette question sur le forum avant de voir ta source et oui je n'avais pas bien chercher.
ta source ma enorment servie moi qui cherche a séparer au max mon code de ma page internet la c'est bon
parcontre comment donne tu la longeur des cellule ?
merci
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 22 avril 2004 à 14:24
Dans ce cas il faut plutot passer par un Datatable ou faire un Data Repeater avec en répétition tes celulles.
F___
ctof3552
Messages postés28Date d'inscriptionjeudi 20 mars 2003StatutMembreDernière intervention25 avril 2005 22 avril 2004 à 14:11
je trouve ce petit bout de code fort interessant !!!
cependant, est il possible d'ajouter des composants aux cellules du tableau, tel que les textbox par exemple ?
j'ai essayé, mais a marche po...
12 févr. 2012 à 18:34
19 juin 2008 à 16:48
19 juin 2008 à 16:24
Mais en fait, pour ceux que ça intéresse, lorsqu'on lit un tableau ainsi, il ne faut pas utiliser ceci :
==> If tblDetails.Rows(a).Cells(15).InnerText then...........
==> col0.Attributes.Add("colspan", "20")
On dirait qu'il ne reconnait plus la colonne 15 qui est plutôt une seule colonne(colspan)....
19 juin 2008 à 10:33
En VB.NET les index partent de 1 à X
X étant le nombre d'items dans une liste
En C#, c'est de 0 a X-1
Voila certainement la raison de cette erreur.
Fabrice
18 juin 2008 à 22:10
Je suis cependant confronté à une erreur lorsque je veux lire le contenu de ma table. J'ai l'erreur suivante : Specified argument was out of the range of valid values (Parameter name: index ). Lorsque je liste la colonne 0, ça fonctionne mais dès que je place un compteur pour lister toutes les valeurs, j'ai l'erreur :
For a = 1 To tblDetails.Rows.Count - 1
Session("monTableau") = Session("monTableau") & "-" & tblDetails.Rows(a).Cells(1).InnerText
Next
Quelle serait la meilleure façon de faire une boucle pour liste le contenu de la table créée plutôt?
Merci!
22 mars 2008 à 19:38
comment faire ??
par ex :
macase.Innerhtml="<a href='travail.aspx?numero='
comment faire pour affecter une valeur a ce parametre
25 févr. 2008 à 20:08
24 sept. 2007 à 19:11
Dim ligne As New HtmlTableRow()
Dim cellule As New HtmlTableCell()
cellule.Attributes.Item("class") = "maCell"
ligne.Attributes.Item("class") = "maLigne"
ligne.Cells.Add(cellule)
table.Rows.Add(ligne)
le résultat est :
<tr class="maLigne>
<td class="maCell">
</td>
</tr>
Il suffit ensuite de définir les classes dans le css ;)
Merci à cette source qui m'a bien aidée !!!
7 août 2007 à 13:18
/// code tableau en c#
HtmlTableRow MaLigne = new HtmlTableRow();
HtmlTableCell macase = new HtmlTableCell();
HtmlTableCell macase2 = new HtmlTableCell();
HtmlTableCell macase3 = new HtmlTableCell();
//-------------------------------------------
TextBox text = new TextBox();
Button boutton = new Button();
//-------------------------------------------
boutton.Text = "Hello !";
//-------------------------------------------
macase.Width = "10%";
macase2.Width = "100";
//-------------------------------------------
macase.InnerHtml = "WWW.ASPFR.COM";
//-------------------------------------------
macase2.Controls.Add(text);
macase3.Controls.Add(boutton);
//-------------------------------------------
MaLigne.Cells.Add(macase);
MaLigne.Cells.Add(macase2);
MaLigne.Cells.Add(macase3);
//------------------------------------------
Table1.Rows.Add(MaLigne);
22 juin 2007 à 15:14
13 juin 2007 à 12:07
la seule chose que j'ai trouvé c'est de faire :
MaLigne.Style.value = "text-align:center;background......."
Maligne.Attributes.CssStyle.value = "MaClasseCSS"->ca marche pas
C'est à dire que je suis obligé de recopier tout ce qu'il y a dans la partie du CSS que je veux appliquer, je n'arrive pas à passer le nom de la class CSS. Une solution ?
5 avril 2007 à 13:54
Bon courage,
Emilien
14 févr. 2007 à 11:19
Ce qui m'embête, c'est que les cellules qui sont créées dynamiquement uniquement au premier chargement de la page (If Not IsPostBack) disparaissent au premier postback.
quelqun a-t'il une idée du problème.
J'ai bien essayé sans la close "If Not IsPostBack". Dans cette condition pas de problème de visualisation mais si un checkbox a été coché, malgré qu'il réapparaisse coché, si je teste sa valeur, elle est égale à "False" ce qui por moi est logique puisque j'ai rechargé le tableau à l'état d'initialisation.
25 oct. 2006 à 11:37
Je m'en sortais pas avec un Datagrid
25 janv. 2005 à 14:28
Cela permet entre autre de pouvoir insérer des textbox dans les cellules.
' ------------------------------
' Dans le fichier xxx.ASPX
....
' ------------------------------
' Dans le fichier xxx.aspx.VB
...
Protected WithEvents MonTableau As System.Web.UI.WebControls.Table
....
'et dans la fonction de chargement par exemple :
MonTableau.Width = Unit.Percentage(100)
MonTableau.CellPadding = 1
MonTableau.CellSpacing = 2
MonTableau.BorderWidth = Unit.Point(0)
' On ne chargera qu'une seule ligne dans ce tableau
Dim colonne As Integer, ligne As Integer
For ligne = 0 To 0
Dim Maligne As New TableRow()
' On ajoutera 10 case dans ce tableau
For colonne =0 To 9
Dim MaCase As New TableCell()
MaCase.Width = "10%"
MaCase.Text = "WWW.ASPFR.COM"
Maligne.Cells.Add(MaCase)
Next
MonTableau.Rows.Add(Maligne)
Next
-----------------
'Autre exemple avec cette fois les données reprises à partir d'un dataset
Dim Maligne2 As New TableRow
' On ajoutera autant de textbox dans cette ligne que de champs dans la table sélectionnée
For colonne = 0 To ds.Tables(0).Columns.Count - 1
Dim MaCase As New TableCell
Dim tb As New TextBox
tb.ID = "txt_" & ds.Tables(0).Columns(colonne).ColumnName
MaCase.Width = Unit.Percentage(10)
MaCase.Controls.AddAt(0, tb)
Maligne2.Cells.Add(MaCase)
Next
MonTableau.Rows.Add(Maligne2)
....
' ------------------------------
22 mai 2004 à 11:38
27 avril 2004 à 20:03
j'ai mal lu le code
merci tout de meme
27 avril 2004 à 18:58
F___
27 avril 2004 à 16:44
ta source ma enorment servie moi qui cherche a séparer au max mon code de ma page internet la c'est bon
parcontre comment donne tu la longeur des cellule ?
merci
22 avril 2004 à 14:24
F___
22 avril 2004 à 14:11
cependant, est il possible d'ajouter des composants aux cellules du tableau, tel que les textbox par exemple ?
j'ai essayé, mais a marche po...