J'ai un soucis pour assigner le resultat d'un métode.
Voilà j'ai créé une classe qui possède une méthode renvoyant un objet Table
de System.Web.UI.WebControls.
Public Class MaClasse
{
Public System.Web.UI.WebControls.Table ConstruireTableau()
{
Table ObjetTable = new Table();
TableRow Ligne = new TableRow();
TableCell Cellule = new TableCell();
Cellule.text = "bla bla bla"
Ligne.Cells.add(cellule);
ObjetTable.rows.add(Ligne);
//
// etc ...
//
return(ObjetTable )
}
}
Le code suivant est présent dans la web form. Il s'execute sans lever
d'exception. De plus l'int i contient bien le nombre de ligne. J'aimerai
savoir si il y a une méthode suplémentaire à appeler pour voir mon tableau
construit ou bien si c'est dans la manière d'assigner le résultat qu'il y a
un problème.
Je voudrais être sur que Table1 ne fait pas référence à un autre Table.
Voilà j'espère avoir été assezclair. Dernière précision le bout de code qui
suit est placé sur un bouton. Sur l'évènement click je veux déclencher la
construction du tableau (objet table) et son affichage.
Private void button2_click(object sender; System.EventsArgs e)
{
MaClasse Catalogue = new MaClasse();
// Table1 est le controle table qui est déjà sur ma web form.
Table1 = Catalogue.ConstruireTableau();
int i = Table1.Rows.count();
Label1.text = "si si, c'est bien fini..." + i.ToString();
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Matthieu GD
grome wrote:
Bonjour,
J'ai un soucis pour assigner le resultat d'un métode. Voilà j'ai créé une classe qui possède une méthode renvoyant un
objet Table
de System.Web.UI.WebControls.
Public Class MaClasse { Public System.Web.UI.WebControls.Table ConstruireTableau() { Table ObjetTable = new Table(); TableRow Ligne = new TableRow(); TableCell Cellule = new TableCell(); Cellule.text = "bla bla bla" Ligne.Cells.add(cellule); ObjetTable.rows.add(Ligne); //
Outre les fautes de syntaxe, il faut sans doute ajouter votre nouvel objet Table aux contrôles de la page : Page.Controls.Add(Table1);
Matthieu
grome wrote:
Bonjour,
J'ai un soucis pour assigner le resultat d'un métode.
Voilà j'ai créé une classe qui possède une méthode renvoyant un
objet Table
de System.Web.UI.WebControls.
Public Class MaClasse
{
Public System.Web.UI.WebControls.Table ConstruireTableau()
{
Table ObjetTable = new Table();
TableRow Ligne = new TableRow();
TableCell Cellule = new TableCell();
Cellule.text = "bla bla bla"
Ligne.Cells.add(cellule);
ObjetTable.rows.add(Ligne);
//
Outre les fautes de syntaxe, il faut sans doute ajouter votre nouvel
objet Table aux contrôles de la page :
Page.Controls.Add(Table1);
J'ai un soucis pour assigner le resultat d'un métode. Voilà j'ai créé une classe qui possède une méthode renvoyant un
objet Table
de System.Web.UI.WebControls.
Public Class MaClasse { Public System.Web.UI.WebControls.Table ConstruireTableau() { Table ObjetTable = new Table(); TableRow Ligne = new TableRow(); TableCell Cellule = new TableCell(); Cellule.text = "bla bla bla" Ligne.Cells.add(cellule); ObjetTable.rows.add(Ligne); //
Outre les fautes de syntaxe, il faut sans doute ajouter votre nouvel objet Table aux contrôles de la page : Page.Controls.Add(Table1);
Matthieu
grome
Justement le contrôle Table est déjà présent sur la page. En fait j'ai résolu le problème en passant le contrôle que j'ai placé sur la page en paramètre de la méthode ConstruireTableau. C'est peut être pas très propre mais çà marche. Par contre je comprend toujours pas ce qui fait que le code précedent ne fonctionnait pas. Je pense que c'est dans la manière d'assigner le résultat de la méthode.
Outre les fautes de syntaxe, il faut sans doute ajouter votre nouvel objet Table aux contrôles de la page : Page.Controls.Add(Table1);
Matthieu
Justement le contrôle Table est déjà présent sur la page.
En fait j'ai résolu le problème en passant le contrôle que j'ai placé sur la
page en paramètre de la méthode ConstruireTableau.
C'est peut être pas très propre mais çà marche. Par contre je comprend
toujours pas ce qui fait que le code précedent ne fonctionnait pas.
Je pense que c'est dans la manière d'assigner le résultat de la méthode.
Outre les fautes de syntaxe, il faut sans doute ajouter votre nouvel
objet Table aux contrôles de la page :
Page.Controls.Add(Table1);
Justement le contrôle Table est déjà présent sur la page. En fait j'ai résolu le problème en passant le contrôle que j'ai placé sur la page en paramètre de la méthode ConstruireTableau. C'est peut être pas très propre mais çà marche. Par contre je comprend toujours pas ce qui fait que le code précedent ne fonctionnait pas. Je pense que c'est dans la manière d'assigner le résultat de la méthode.
Outre les fautes de syntaxe, il faut sans doute ajouter votre nouvel objet Table aux contrôles de la page : Page.Controls.Add(Table1);
Matthieu
Simon Mourier [MS]
En effet, si le contrôle table est déja existant (crée par le designer de visual studio sans doute?), lui réassigner une valeur le détruit et en recrée un qui n'est donc plus sur la page. Il vaudrait donc mieux faire:
Public void ConstruireTableau(Table table) { TableRow Ligne = new TableRow(); TableCell Cellule = new TableCell(); Cellule.text = "bla bla bla" Ligne.Cells.add(cellule); table.rows.add(Ligne); // // etc ... // }
Private void button2_click(object sender; System.EventsArgs e) { MaClasse Catalogue = new MaClasse(); Catalogue.ConstruireTableau(Table1); int i = Table1.Rows.count(); Label1.text = "si si, c'est bien fini..." + i.ToString(); }
Simon.
"grome" a écrit dans le message de news: 41c7cee6$0$5028$
Justement le contrôle Table est déjà présent sur la page. En fait j'ai résolu le problème en passant le contrôle que j'ai placé sur la page en paramètre de la méthode ConstruireTableau. C'est peut être pas très propre mais çà marche. Par contre je comprend toujours pas ce qui fait que le code précedent ne fonctionnait pas. Je pense que c'est dans la manière d'assigner le résultat de la méthode.
Outre les fautes de syntaxe, il faut sans doute ajouter votre nouvel objet Table aux contrôles de la page : Page.Controls.Add(Table1);
Matthieu
En effet, si le contrôle table est déja existant (crée par le designer de
visual studio sans doute?), lui réassigner une valeur le détruit et en
recrée un qui n'est donc plus sur la page. Il vaudrait donc mieux faire:
Public void ConstruireTableau(Table table)
{
TableRow Ligne = new TableRow();
TableCell Cellule = new TableCell();
Cellule.text = "bla bla bla"
Ligne.Cells.add(cellule);
table.rows.add(Ligne);
//
// etc ...
//
}
Private void button2_click(object sender; System.EventsArgs e)
{
MaClasse Catalogue = new MaClasse();
Catalogue.ConstruireTableau(Table1);
int i = Table1.Rows.count();
Label1.text = "si si, c'est bien fini..." + i.ToString();
}
Simon.
"grome" <no@spam.fr> a écrit dans le message de news:
41c7cee6$0$5028$636a15ce@news.free.fr...
Justement le contrôle Table est déjà présent sur la page.
En fait j'ai résolu le problème en passant le contrôle que j'ai placé sur
la page en paramètre de la méthode ConstruireTableau.
C'est peut être pas très propre mais çà marche. Par contre je comprend
toujours pas ce qui fait que le code précedent ne fonctionnait pas.
Je pense que c'est dans la manière d'assigner le résultat de la méthode.
Outre les fautes de syntaxe, il faut sans doute ajouter votre nouvel
objet Table aux contrôles de la page :
Page.Controls.Add(Table1);
En effet, si le contrôle table est déja existant (crée par le designer de visual studio sans doute?), lui réassigner une valeur le détruit et en recrée un qui n'est donc plus sur la page. Il vaudrait donc mieux faire:
Public void ConstruireTableau(Table table) { TableRow Ligne = new TableRow(); TableCell Cellule = new TableCell(); Cellule.text = "bla bla bla" Ligne.Cells.add(cellule); table.rows.add(Ligne); // // etc ... // }
Private void button2_click(object sender; System.EventsArgs e) { MaClasse Catalogue = new MaClasse(); Catalogue.ConstruireTableau(Table1); int i = Table1.Rows.count(); Label1.text = "si si, c'est bien fini..." + i.ToString(); }
Simon.
"grome" a écrit dans le message de news: 41c7cee6$0$5028$
Justement le contrôle Table est déjà présent sur la page. En fait j'ai résolu le problème en passant le contrôle que j'ai placé sur la page en paramètre de la méthode ConstruireTableau. C'est peut être pas très propre mais çà marche. Par contre je comprend toujours pas ce qui fait que le code précedent ne fonctionnait pas. Je pense que c'est dans la manière d'assigner le résultat de la méthode.
Outre les fautes de syntaxe, il faut sans doute ajouter votre nouvel objet Table aux contrôles de la page : Page.Controls.Add(Table1);
Matthieu
Zazar
Bonjour,
2 petites précisions :
En effet, si le contrôle table est déja existant (crée par le designer de visual studio sans doute?), lui réassigner une valeur le détruit et en recrée un qui n'est donc plus sur la page.
Le fait de réaffecter une nouvelle valeur, ne détruit pas l'ancienne table, elle existe toujours car elle est référencée dans la collections Controls de la feuille.
Il vaudrait donc mieux faire:
Public void ConstruireTableau(Table table) {
Ici, il pourrait être utile de placer un table.Rows.Clear() selon les besoins.
TableRow Ligne = new TableRow(); TableCell Cellule = new TableCell(); Cellule.text = "bla bla bla" Ligne.Cells.add(cellule); table.rows.add(Ligne); // // etc ... // }
--
Zazar
Bonjour,
2 petites précisions :
En effet, si le contrôle table est déja existant (crée par le designer de
visual studio sans doute?), lui réassigner une valeur le détruit et en
recrée un qui n'est donc plus sur la page.
Le fait de réaffecter une nouvelle valeur, ne détruit pas l'ancienne table,
elle existe toujours car elle est référencée dans la collections Controls de
la feuille.
Il vaudrait donc mieux faire:
Public void ConstruireTableau(Table table)
{
Ici, il pourrait être utile de placer un table.Rows.Clear() selon les
besoins.
TableRow Ligne = new TableRow();
TableCell Cellule = new TableCell();
Cellule.text = "bla bla bla"
Ligne.Cells.add(cellule);
table.rows.add(Ligne);
//
// etc ...
//
}
En effet, si le contrôle table est déja existant (crée par le designer de visual studio sans doute?), lui réassigner une valeur le détruit et en recrée un qui n'est donc plus sur la page.
Le fait de réaffecter une nouvelle valeur, ne détruit pas l'ancienne table, elle existe toujours car elle est référencée dans la collections Controls de la feuille.
Il vaudrait donc mieux faire:
Public void ConstruireTableau(Table table) {
Ici, il pourrait être utile de placer un table.Rows.Clear() selon les besoins.
TableRow Ligne = new TableRow(); TableCell Cellule = new TableCell(); Cellule.text = "bla bla bla" Ligne.Cells.add(cellule); table.rows.add(Ligne); // // etc ... // }
--
Zazar
Simon Mourier [MS]
Euh, le fait de faire un new Table() crée bien une nouvelle table qui n'est pas dans les contrôles de la page. Et la référence est bien réinitialisée. Ca ne détruit pas l'ancienne table (mais sa référence ok), mais comme elle ne contenait rien c'est pour cela que le résultat n'est pas le bon.
Simon.
"Zazar" a écrit dans le message de news:
Bonjour,
2 petites précisions :
En effet, si le contrôle table est déja existant (crée par le designer de visual studio sans doute?), lui réassigner une valeur le détruit et en recrée un qui n'est donc plus sur la page.
Le fait de réaffecter une nouvelle valeur, ne détruit pas l'ancienne table, elle existe toujours car elle est référencée dans la collections Controls de la feuille.
Il vaudrait donc mieux faire:
Public void ConstruireTableau(Table table) {
Ici, il pourrait être utile de placer un table.Rows.Clear() selon les besoins.
TableRow Ligne = new TableRow(); TableCell Cellule = new TableCell(); Cellule.text = "bla bla bla" Ligne.Cells.add(cellule); table.rows.add(Ligne); // // etc ... // }
--
Zazar
Euh, le fait de faire un new Table() crée bien une nouvelle table qui n'est
pas dans les contrôles de la page. Et la référence est bien réinitialisée.
Ca ne détruit pas l'ancienne table (mais sa référence ok), mais comme elle
ne contenait rien c'est pour cela que le résultat n'est pas le bon.
Simon.
"Zazar" <DILAVNI.nicolas.prats@iie.cnam.fr.INVALID> a écrit dans le message
de news: u8HTfY15EHA.1296@TK2MSFTNGP10.phx.gbl...
Bonjour,
2 petites précisions :
En effet, si le contrôle table est déja existant (crée par le designer de
visual studio sans doute?), lui réassigner une valeur le détruit et en
recrée un qui n'est donc plus sur la page.
Le fait de réaffecter une nouvelle valeur, ne détruit pas l'ancienne
table,
elle existe toujours car elle est référencée dans la collections Controls
de
la feuille.
Il vaudrait donc mieux faire:
Public void ConstruireTableau(Table table)
{
Ici, il pourrait être utile de placer un table.Rows.Clear() selon les
besoins.
TableRow Ligne = new TableRow();
TableCell Cellule = new TableCell();
Cellule.text = "bla bla bla"
Ligne.Cells.add(cellule);
table.rows.add(Ligne);
//
// etc ...
//
}
Euh, le fait de faire un new Table() crée bien une nouvelle table qui n'est pas dans les contrôles de la page. Et la référence est bien réinitialisée. Ca ne détruit pas l'ancienne table (mais sa référence ok), mais comme elle ne contenait rien c'est pour cela que le résultat n'est pas le bon.
Simon.
"Zazar" a écrit dans le message de news:
Bonjour,
2 petites précisions :
En effet, si le contrôle table est déja existant (crée par le designer de visual studio sans doute?), lui réassigner une valeur le détruit et en recrée un qui n'est donc plus sur la page.
Le fait de réaffecter une nouvelle valeur, ne détruit pas l'ancienne table, elle existe toujours car elle est référencée dans la collections Controls de la feuille.
Il vaudrait donc mieux faire:
Public void ConstruireTableau(Table table) {
Ici, il pourrait être utile de placer un table.Rows.Clear() selon les besoins.
TableRow Ligne = new TableRow(); TableCell Cellule = new TableCell(); Cellule.text = "bla bla bla" Ligne.Cells.add(cellule); table.rows.add(Ligne); // // etc ... // }
--
Zazar
Zazar
Bonsoir,
Euh, le fait de faire un new Table() crée bien une nouvelle table qui
n'est
pas dans les contrôles de la page.
Je n'ai pas dit le contraire.
Et la référence est bien réinitialisée.
Disons plutôt que la variable référence un nouvel objet.
Ca ne détruit pas l'ancienne table (mais sa référence ok), mais comme elle ne contenait rien c'est pour cela que le résultat n'est pas le bon.
Exact.
J'ai l'impression que nous ne nous sommes pas compris : J'ai compris que vous disiez que : Si on a une WebForm qui contient un membre : protected Table Table1; et qu'on a un .aspx qui déclare une table coté serveur, d'ID Table1, si on faisait Table1 = new Table(); vous prétendiez que l'ancienne table (celle déclarée dans le .aspx) était détruite. Je disais alors que ce n'était pas le cas.
-- Zazar
Bonsoir,
Euh, le fait de faire un new Table() crée bien une nouvelle table qui
n'est
pas dans les contrôles de la page.
Je n'ai pas dit le contraire.
Et la référence est bien réinitialisée.
Disons plutôt que la variable référence un nouvel objet.
Ca ne détruit pas l'ancienne table (mais sa référence ok), mais comme elle
ne contenait rien c'est pour cela que le résultat n'est pas le bon.
Exact.
J'ai l'impression que nous ne nous sommes pas compris :
J'ai compris que vous disiez que :
Si on a une WebForm qui contient un membre :
protected Table Table1;
et qu'on a un .aspx qui déclare une table coté serveur, d'ID Table1, si on
faisait
Table1 = new Table();
vous prétendiez que l'ancienne table (celle déclarée dans le .aspx) était
détruite.
Je disais alors que ce n'était pas le cas.
Euh, le fait de faire un new Table() crée bien une nouvelle table qui
n'est
pas dans les contrôles de la page.
Je n'ai pas dit le contraire.
Et la référence est bien réinitialisée.
Disons plutôt que la variable référence un nouvel objet.
Ca ne détruit pas l'ancienne table (mais sa référence ok), mais comme elle ne contenait rien c'est pour cela que le résultat n'est pas le bon.
Exact.
J'ai l'impression que nous ne nous sommes pas compris : J'ai compris que vous disiez que : Si on a une WebForm qui contient un membre : protected Table Table1; et qu'on a un .aspx qui déclare une table coté serveur, d'ID Table1, si on faisait Table1 = new Table(); vous prétendiez que l'ancienne table (celle déclarée dans le .aspx) était détruite. Je disais alors que ce n'était pas le cas.