OVH Cloud OVH Cloud

Le tableau fantôme ....

6 réponses
Avatar
cpeltier
J'essaie de créer un tableau en fonction d'une requête sql.
J'ai donc écrit un petit bout de code, (voir ci-dessous), mais rien ne
s'affiche.
Donc je pense faire une erreur de syntaxe, mais cependant rien d'apparent à
la compilation. Quelqu'un peut-il jeter un oeil sur mon code ?

Merci d'avance

'____________________________________________________________

Sub page_load()
dim NbCol,NbLig,i,j as integer
dim ListeMembre as New System.Data.DataSet
dim Tableau as Table
dim Ligne as TableRow
dim Cellule as TableCell

if IsPostBack then
else
'extraire les données de la base
ListeMembre=getList(session("sql"))
'ici initialiser le nombre de colonne en fonction du nombre de champ de
la table
NbCol=ListeMembre.Tables(0).columns.Count
debug2.text=nbcol
NbLig=ListeMembre.Tables(0).Rows.Count
debug3.text=nblig
'puis initialiser le tableau
Tableau=new Table()
Tableau.GridLines=GridLines.both
for i=0 to nblig-1
Ligne=new TableRow()
ligne.backcolor=color.yellow
Tableau.Rows.Add(Ligne)
for j=0 to NbCol-1
Cellule=new TableCell()
Cellule.text="a"
Ligne.Cells.Add(Cellule)
next j
next i
tableau.visible="true"
end if
end sub

'____________________________________________________________

6 réponses

Avatar
si le tableau est un datagrid il suffit d'assigner le
dataset à sa propriété DataSource puis de placer dans
DataMember le nom de la datatable à afficher
Pour finir tu appelles la méthode DataBind() de l'objet
ou de la page

-----Original Message-----
J'essaie de créer un tableau en fonction d'une requête


sql.
J'ai donc écrit un petit bout de code, (voir ci-


dessous), mais rien ne
s'affiche.
Donc je pense faire une erreur de syntaxe, mais


cependant rien d'apparent Ã
la compilation. Quelqu'un peut-il jeter un oeil sur mon


code ?

Merci d'avance

'________________________________________________________


____

Sub page_load()
dim NbCol,NbLig,i,j as integer
dim ListeMembre as New System.Data.DataSet
dim Tableau as Table
dim Ligne as TableRow
dim Cellule as TableCell

if IsPostBack then
else
'extraire les données de la base
ListeMembre=getList(session("sql"))
'ici initialiser le nombre de colonne en fonction du


nombre de champ de
la table
NbCol=ListeMembre.Tables(0).columns.Count
debug2.text=nbcol
NbLig=ListeMembre.Tables(0).Rows.Count
debug3.text=nblig
'puis initialiser le tableau
Tableau=new Table()
Tableau.GridLines=GridLines.both
for i=0 to nblig-1
Ligne=new TableRow()
ligne.backcolor=color.yellow
Tableau.Rows.Add(Ligne)
for j=0 to NbCol-1
Cellule=new TableCell()
Cellule.text="a"
Ligne.Cells.Add(Cellule)
next j
next i
tableau.visible="true"
end if
end sub

'________________________________________________________


____


.



Avatar
Zazar
Bonjour,
J'essaie de créer un tableau en fonction d'une requête sql.
J'ai donc écrit un petit bout de code, (voir ci-dessous), mais rien ne
s'affiche.
Donc je pense faire une erreur de syntaxe, mais cependant rien d'apparent
à
la compilation. Quelqu'un peut-il jeter un oeil sur mon code ?


<snip code>
A première vue, ça a l'air correct. Le seul truc qui me paraît suspect,
c'est que vous fassiez un appel à un objet de la Session que lors du premier
appel à la page en utilisant une syntaxe peu conforme :) mais c'est
peut-être voulu. Pour comprendre où est l'erreur, vérifiez avec un
débogueur, si votre dataset est correctement rempli. Si c'est le cas, faîtes
du pas à pas pour débusquer les comportements anormaux.
Enfin, avez vous regardé du coté du DataSet ou du Repeater ? Ces 2 objets
vous permettront de générer une table automatiquement.

--
Zazar
Avatar
cpeltier
Bonjour,
En fait j'ai inséré une ligne de debug (Cellule.text="a") et m'attendais à
obtenir un tableau avec des cellules remplies de "a" ( les nb de lignes et de
colonnes sont correctement renseignées à partir de "listemembre")
mais je n'obtiens que page blanche ....
Je suis interessé par les technique de "pas à pas" mais n'ai aucune idée des
moyens à mettre en oeuvre : j'utilise webmatrix. quelle sont les outils de
debug?
Merci


"Zazar" wrote:

Bonjour,
> J'essaie de créer un tableau en fonction d'une requête sql.
> J'ai donc écrit un petit bout de code, (voir ci-dessous), mais rien ne
> s'affiche.
> Donc je pense faire une erreur de syntaxe, mais cependant rien d'apparent
> à
> la compilation. Quelqu'un peut-il jeter un oeil sur mon code ?
<snip code>
A première vue, ça a l'air correct. Le seul truc qui me paraît suspect,
c'est que vous fassiez un appel à un objet de la Session que lors du premier
appel à la page en utilisant une syntaxe peu conforme :) mais c'est
peut-être voulu. Pour comprendre où est l'erreur, vérifiez avec un
débogueur, si votre dataset est correctement rempli. Si c'est le cas, faîtes
du pas à pas pour débusquer les comportements anormaux.
Enfin, avez vous regardé du coté du DataSet ou du Repeater ? Ces 2 objets
vous permettront de générer une table automatiquement.

--
Zazar





Avatar
Zazar
Bonjour,

En fait j'ai inséré une ligne de debug (Cellule.text="a") et m'attendais à
obtenir un tableau avec des cellules remplies de "a" ( les nb de lignes et


de
colonnes sont correctement renseignées à partir de "listemembre")
mais je n'obtiens que page blanche ....
Je suis interessé par les technique de "pas à pas" mais n'ai aucune idée


des
moyens à mettre en oeuvre : j'utilise webmatrix. quelle sont les outils de
debug?



Je ne connais pas webmatrix, peut-être qu'il n'inclut pas d'outil de
débogage. Mais vous pouvez vous en sortir en installant le sdk qui en
contient un.
Si vous n'avez pas envie de vous embêter l'installer, mettez d'autre lignes
de débogage, mais :
-> au lieu de vérifiez si une variable contient la valeur que vous
attendiez, affichez plutôt la valeur de la variable : ça vous donnera plus
d'information
-> Vérifiez notamment que votre source de données (ListeMembre) est
correcte.

--
Zazar
Avatar
cpeltier
Bon, je pense qu'en fait je n'avais rien compris du tout. A partir de vos
informations j'ai fini par écrire un code qui fonctionne :

Sub page_load()
dim intNbCol,intNbLig,intNbCar,i,j as integer
dim strTypes,strType,strTitres,strTitre as string
dim ListeMembre as New System.Data.DataSet("Réponse")
dim tableau as new datatable
dim colonne as DataColumn
dim ligne as Datarow

if IsPostBack then
else
ListeMembre.tables.add(tableau)
'créer les colonnes à partir de la variable session TypeCol
strTypes=session("TypeCol")
strTitres=session("TitreCol")
intNbCar=len(strTypes)
While intNbCar > 0
ParseString(strTypes,strType,intNbCar)
ParseString(strTitres,strTitre,intNbCar)
colonne=new datacolumn()
' colonne.DataType = System.Type.GetType("""strtype""")
debug2.text=strtype
colonne.ColumnName = strTitre
tableau.Columns.Add(colonne)
end while
'extraire les données de la base
ListeMembre=getList(session("sql"))
DataGrid1.DataSource=listemembre
DataGrid1.databind()
demandemail.text="souhaitez vous recevoir cette liste par mail ?"
mail.visible="false"
end if
end sub

'__________________________________________________________

Function getList(strselect) As System.Data.DataSet
Dim strConnection As
string=ConfigurationSettings.AppSettings("ConnStringQdBAccess")
Dim myconnection as new oledbconnection(strConnection)
Dim dataSet As System.Data.DataSet = New System.Data.DataSet
Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand
Dim dataAdapter As System.Data.IDbDataAdapter = New
System.Data.OleDb.OleDbDataAdapter

dbCommand.CommandText = strselect
dbCommand.Connection = myconnection

dataAdapter.SelectCommand = dbCommand
dataAdapter.Fill(dataSet)
myconnection.close
Return dataSet

End Function

'____________________________________________________________

Il me reste un pb à régler :
dans page_load, je souhaitais typer mes colonnes de tableau, (parce que j'ai
lu celà dans la doc qqpart) mais je n'arrive pas à utiliser
' colonne.DataType = System.Type.GetType(strtype)
puisque strtype est une chaîne de caractère. Je me fais injurier car
"strtype" n'est pas un type reconnu.
Certes. Mais H2 arriver à lui passer le contenu de mon strtype ??

Si vous avez une idée, je suis preneur...
Merci de votre aide et bon WE






"cpeltier" wrote:

Bonjour,
En fait j'ai inséré une ligne de debug (Cellule.text="a") et m'attendais à
obtenir un tableau avec des cellules remplies de "a" ( les nb de lignes et de
colonnes sont correctement renseignées à partir de "listemembre")
mais je n'obtiens que page blanche ....
Je suis interessé par les technique de "pas à pas" mais n'ai aucune idée des
moyens à mettre en oeuvre : j'utilise webmatrix. quelle sont les outils de
debug?
Merci


"Zazar" wrote:

> Bonjour,
> > J'essaie de créer un tableau en fonction d'une requête sql.
> > J'ai donc écrit un petit bout de code, (voir ci-dessous), mais rien ne
> > s'affiche.
> > Donc je pense faire une erreur de syntaxe, mais cependant rien d'apparent
> > à
> > la compilation. Quelqu'un peut-il jeter un oeil sur mon code ?
> <snip code>
> A première vue, ça a l'air correct. Le seul truc qui me paraît suspect,
> c'est que vous fassiez un appel à un objet de la Session que lors du premier
> appel à la page en utilisant une syntaxe peu conforme :) mais c'est
> peut-être voulu. Pour comprendre où est l'erreur, vérifiez avec un
> débogueur, si votre dataset est correctement rempli. Si c'est le cas, faîtes
> du pas à pas pour débusquer les comportements anormaux.
> Enfin, avez vous regardé du coté du DataSet ou du Repeater ? Ces 2 objets
> vous permettront de générer une table automatiquement.
>
> --
> Zazar
>
>
>


Avatar
Zazar
Bonsoir,

Bon, je pense qu'en fait je n'avais rien compris du tout.


Vous étiez plutôt passé à coté du concept de datagrid et étiez en train de
réinventez la roue.

A partir de vos
informations j'ai fini par écrire un code qui fonctionne :



<snipcode>
Votre code a l'air correct (je n'ai pas regardé dans le détail), mais vous
devriez soit définir vos colonnes de manières statiques dans le .ascx, soit
demander au datagrid de les générer automatiquement, mais pas les générer de
manière statique dans le code-behind.

Il me reste un pb à régler :
dans page_load, je souhaitais typer mes colonnes de tableau, (parce que


j'ai
lu celà dans la doc qqpart) mais je n'arrive pas à utiliser
' colonne.DataType = System.Type.GetType(strtype)
puisque strtype est une chaîne de caractère. Je me fais injurier car
"strtype" n'est pas un type reconnu.



Que contient votre variable strtype ? vous n'avez le droit qu'à certaines
valeurs (cf la doc).

Certes. Mais H2 arriver à lui passer le contenu de mon strtype ??


Heu, c'est quoi H2 ?


--
Zazar