Problème de formulaires côté serveur (update 4/05/04) [ASP.NET/C#] - C#/.NET managed - Programmation
Marsh Posté le 22-04-2004 à 11:46:50
je sais oui, mais je veux des conseils de pro, ca serait quoi le plus adapté pour mon cas :
Un DataGrid, DataList, Repeater ?
Ou pas utiliser un objet ?
J'ai même un super bouquin Formation à .... ASP.NET
J'aurais du prendre ASP.NET pour les nuls
Marsh Posté le 22-04-2004 à 11:53:07
tout dépend de la tronche que tu veux que ca aie a l'arrivée
dans tous les cas, ne fous pas de code directement dans l'aspx, c'est cracra
le codebehind est fait pour ca
la dedans tu déclares un nouvel objet TextBox et tu le fous dans un conteneur quelconque
Marsh Posté le 22-04-2004 à 15:07:27
En gros ca serait de la Création dynamique de formulaire Web (nombre de button, champs, listes variables..).
Le mieux ne serait il pas de créer un objet panel et d'ajouter des trucs dedans ?
Marsh Posté le 22-04-2004 à 15:46:51
Oui tu me l'avais déjà dit et sinon je cherche à faire un parcours simple de mon DataSet (ou DataReader ?) du style (j'ai cherché mais de partout il est question de mettre le Dataset dans un objet comme DataList ou DataGrid) :
Code :
|
Merci
PS : le SGBD est SQL Server et je travaille sous VS .NET 2003 (C#)
Marsh Posté le 22-04-2004 à 16:28:06
y msdn.microsoft.com pour la doc
ou la msdn livrée avec vs enterprise architect
je te renvoie systématiquement a la doc, c'est ce qu'il y a de mieux pour toi
Marsh Posté le 23-04-2004 à 11:25:56
Tiens j'ai un problème et là je vois vraiment pas la solution pourtant j'ai cherché.
Voilà je fais une requête sur un élément de type ntext(2000) (sous SqlServer) que je neux pas pas changer.
Je fais la requête select element from Table
ET quand je fais
Code :
|
J'ai systématiquement une exception
Specified cast is not valid.
C'est pas convertible le ntext en String ??
Sinon j'ai essayé aussi :
[i]select CONVERT(varchar(2000),element) as nom from Table
Code :
|
Et la même erreur ??
Je comprends pas là, ça doit être tout con mais j'arrive pas
Marsh Posté le 23-04-2004 à 13:52:22
string nom=ds.Tables[0].Rows[i]["nom"].ToString();
peut etre
Marsh Posté le 23-04-2004 à 16:12:31
Oui merci Tamahome, en effet, c'était tout con
Marsh Posté le 26-04-2004 à 11:27:50
Un nouveau problème,
en mettant ce code dans le fichier .aspx :
Code :
|
Le conteneur Panel contient plein de champs et un bouton (tout est déclaré dans le code behind.)
Le formulaire me redirige toujours vers la page courante (alors que je veux récupérer les valeurs du formulaire dans validation.aspx).
Le code HTML généré est :
Code :
|
PS : et en enlevant le runat="server" dans le <form ...> ca marche plus (exception..)
Marsh Posté le 26-04-2004 à 19:55:24
Personne n'a été confronté à ce problème ?
C'est normal ?
Marsh Posté le 28-04-2004 à 10:33:21
PC2000 a écrit : Personne n'a été confronté à ce problème ? |
bon alors c normal
dans le framework .NET, le traitement des données se fait dans la présente page et non la page suivante... j'explique :
la page se charge normalement..
--> page_init, page_load
on clique sur le bouton qui poste le formulaire
ça recharge la page courante en mode postback (Page.IsPostBack...)
--> page_init, page_load
et ça applique la méthode du bouton enfin
--> button_onClick
et c'est là que tu traites les données et que tu fais une redirection sous forme de Server.Transfer ou Response.Redirect
c le principe même du fonctionnement du framework !
est-ce clair ?
Marsh Posté le 28-04-2004 à 14:31:58
En effet, ça répond tout à fait à ma question.
Donc il est inutile de mettre action="validation.aspx" dans la balise <form> ca n'a strictement aucun intérêt ?
Il faut donc traiter l'évènement du clic bouton et faire une redirection.
J'ai fait et ça fonctionne
Merchi bien
PS : différence entre Server.Transfer & Response.Redirect ?
Marsh Posté le 28-04-2004 à 15:50:12
ça c la grande question qui dure sous .NET !!
le mieux : http://www.vsnetfr.com/lien.aspx?ID=3617
perso je préfère les Server.Transfer ! t moins paumé dans les pages après (le form correspond à l'URL affiché...)
Marsh Posté le 04-05-2004 à 21:18:02
Mon (nouveau) problème :
Je pars du Commerce Starter Kit pour réaliser une site de Ecommerce.
Les pages web du projets sont constituées d'une page .aspx (page.aspx) et de deux "user control" .ascx (_menu.ascx et _header.ascx).
Le truc c'est que j'ai besoin de mettre un menu dynamique (formulaire côté serveur) sur toutes mes pages web.
Ce menu dynamique est constitué de listes déroulantes (remplies par les données de la base)
exemple typique :
Code :
|
Je mets donc ce type dans code dans le fichier _header.ascx.
Celà ne pose pas de problème quand la page .aspx ne contient pas de formulaire dynamique mais dès que c'est le cas .. Erreur..
Une page ne peut comporter qu'une seule balise Form côté serveur.
Détails de l'exception: System.Web.HttpException: Une page ne peut comporter qu'une seule balise Form côté serveur.
Normal puisqu'une page ASP.NET ne peut contenir plus d'une balise <form runat="server">.
Je me pose donc la question de la façon d'intégrer ce menu dynamique dans l'ensemble de mes pages web.
Utiliser un conteneur ne résoud pas mon problème
Merci d'avance de l'aide que vous pourrez m'apporter
Marsh Posté le 22-04-2004 à 10:42:00
Voilà ce que je veux faire :
j'ai une table sous Sql Server qui contient des produits qui ont chacun des noms d'attributs spécifiques avec un type (textfield, listBox ...).
Je sais récupérer ces données mais je veux une fois que ces données sont récupérées, créer les objets correspondants (je fais la même page .aspx qui doit contenir des données différentes selon les produits).
Le problème c'est que je suis sous Visual Studio.NET 2003 et je ne sais pas comment déclarer les objets textbox ou listbox de manière dynamique dans le fichier .aspx (je sais qu'en PHP j'aurais fait un simple
en plein milieu du code
)
Mais comment faire en ASP.NET ?
Merci d'avance
Message édité par pc2000 le 04-05-2004 à 21:18:49