begin process at 2010 07 31 04:40:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > ASP.NET - CRÉER UN TABLEAU HTML DYNAMIQUEMENT À PARTIR DU CODE BEHIND

ASP.NET - CRÉER UN TABLEAU HTML DYNAMIQUEMENT À PARTIR DU CODE BEHIND


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ASP.Net Source .NET ( DotNet ) Niveau :Débutant Date de création :29/04/2003 Date de mise à jour :29/04/2003 17:24:44 Vu :41 636

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note


 Description

Il peut être très utile de pouvoir manager un tableau HTML déclaré dans le gabarit (xxx.ASPX), à partir du code behind (xxx.aspx.VB).
Ceci afin de par exemple charger le tableau depuis une base de données.
  

Source

  • ' ------------------------------
  • ' Dans le fichier xxx.ASPX
  • .....
  • ' On ne fait que de déclarer le tableau HTML avec la balise classique HTML
  • ' TABLE en ajoutant dans la balise : id="MonTableau" et runat="server"
  • <TABLE ID=MonTableau runat="server" >
  • </TABLE>
  • ....
  • ' ------------------------------
  • ' Dans le fichier xxx.aspx.VB
  • 'on aura alors
  • ...
  • Protected WithEvents MonTableau As System.Web.UI.HtmlControls.HtmlTable
  • ....
  • 'et dans la fonction de chargement par exemple :
  • MonTableau.Width = "100%"
  • MonTableau.CellPadding = "1"
  • MonTableau.CellSpacing = "2"
  • MonTableau.Border = "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 HtmlTableRow()
  • ' On ajoutera 10 case dans ce tableau
  • For colonne =0 to 9
  • Dim MaCase As New HtmlTableCell()
  • MaCase.Width = "10%"
  • MaCase.InnerHtml = "WWW.ASPFR.COM"
  • Maligne.Cells.Add(MaCase)
  • Next
  • MonTableau.Rows.Add(Maligne)
  • Next
  • ....
  • ' ------------------------------
' ------------------------------
' Dans le fichier xxx.ASPX

.....
' On ne fait que de déclarer le tableau HTML avec la balise classique HTML 
' TABLE en ajoutant dans la balise : id="MonTableau"  et runat="server" 
<TABLE ID=MonTableau  runat="server" >
</TABLE>
....

' ------------------------------
' Dans le fichier xxx.aspx.VB

'on aura alors 
...
Protected WithEvents MonTableau As System.Web.UI.HtmlControls.HtmlTable
....

'et dans la fonction de chargement par exemple :

MonTableau.Width = "100%"
MonTableau.CellPadding = "1"
MonTableau.CellSpacing = "2"
MonTableau.Border = "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 HtmlTableRow()
 ' On ajoutera 10 case dans ce tableau
 For colonne =0 to 9
   Dim MaCase As New HtmlTableCell()
   MaCase.Width = "10%"
   MaCase.InnerHtml = "WWW.ASPFR.COM"
   Maligne.Cells.Add(MaCase)
 Next
MonTableau.Rows.Add(Maligne)
Next

....
' ------------------------------
  

 Conclusion

Bon coding

Romelard Fabrice (Alias F___)  


 Sources du même auteur

Source .NET (Dotnet) SHAREPOINT 2007 - OBTENIR LA LISTE DES WEBPARTS DANS UNE PAG...
Source .NET (Dotnet) SHAREPOINT 2007 - OBTERNIR LA LISTE DES FEATURES D'UN SITE
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES COLLATIONS SHAREPOINT...
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES LANGUES INSTALLÉES DA...
Source .NET (Dotnet) C# - FONCTION TRÈS SIMPLE POUR ENVOYER UN MAIL VIA SMTP

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) UTILISATION DE LA MÉTHODE SORT ET SORTDIRECTION AVEC UN GRID... par jesusonline
Source avec Zip Source .NET (Dotnet) CUSTOM DATEPIKER DÉRIVANT DE COMPOSITECONTROL par fredzool

Commentaires et avis

Commentaire de ctof3552 le 22/04/2004 14:11:31

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...

Commentaire de fabrice69 le 22/04/2004 14:24:16 administrateur CS

Dans ce cas il faut plutot passer par un Datatable ou faire un Data Repeater avec en répétition tes celulles.

F___

Commentaire de dionysos6868 le 27/04/2004 16:44:50

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

Commentaire de fabrice69 le 27/04/2004 18:58:18 administrateur CS

Avec le Width de la Case (Cellule).

F___

Commentaire de dionysos6868 le 27/04/2004 20:03:26

dsl de cette question j'etais mal reveiller lol
j'ai mal lu le code

merci tout de meme

Commentaire de dionysos6868 le 22/05/2004 11:38:22

y aurais t'il moyen de fair la fonction onmouseover et onmouseout car je ne trouve pas

Commentaire de LDvper le 25/01/2005 14:28:53

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

<asp:TABLE ID=MonTableau    runat="server" >
</asp:TABLE>
....

' ------------------------------
' 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)
....
' ------------------------------
    

Commentaire de Drakulv le 25/10/2006 11:37:03

Merci beaucoup pour cette source !
Je m'en sortais pas avec un Datagrid

Commentaire de pee le 14/02/2007 11:19:31

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.

Commentaire de Azo le 05/04/2007 13:54:21

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

Commentaire de Jul_ARSOE le 13/06/2007 12:07:30

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 ?

Commentaire de snatch13 le 22/06/2007 15:14:07

Est-il possible de mettre des asp control dans chaque case?

Commentaire de leproc le 07/08/2007 13:18:16

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);

Commentaire de ecthelion_77 le 24/09/2007 19:11:04 10/10

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()

        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 !!!

Commentaire de CathieMithra85 le 25/02/2008 20:08:26

Un gros gros merci!!!!!!

Commentaire de infodevlo le 22/03/2008 19:38:36

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

Commentaire de Maroxye le 18/06/2008 22:10:33

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!

Commentaire de fabrice69 le 19/06/2008 10:33:51 administrateur CS

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

Commentaire de Maroxye le 19/06/2008 16:24:59

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)....

Commentaire de fabrice69 le 19/06/2008 16:48:26 administrateur CS

Je n'ai poas joué avec ces options de colspan depuis le code Behind

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales