Formulaires ASP.NET et Frames - C#/.NET managed - Programmation
Marsh Posté le 11-05-2004 à 21:00:42
Personne n'a utilisé les Frames avec l'ASP.NET (en C# ou VB.NET) ?
Marsh Posté le 12-05-2004 à 10:00:14
je ne suis pas sûr de tout comprendre mais je pense que tu ne connais pas le principe de gestion des événements avec le framework .NET
j'ai déjà posté un truc sur ce sujet... je le recherche et je te le donne !
edit :
http://forum.hardware.fr/forum2.ph [...] =0#t710500
si ça va pas, explique mieux ton truc... et on s'en sortira !
Marsh Posté le 12-05-2004 à 11:43:27
Je pense que tu n'as pas bien compris mon problème (ce n'est plus du tout le même, maintenant je sais faire des submit )
Voilà les probs qui se posent, j'ai mon formulaire qui comportent plusieurs objets
Code :
|
Ce que je veux c'est transmettre le résultat à une FRAME donc je gère l'évènement comme ceci :
sur un bouton je lui mets "OnClick=go" et
Code :
|
Le problème avec ce transfert c'est que ca reste sur la même Frame alors que je veux envoyer les résultats à une autre Frame.
Je peux aussi faire ca :
Code :
|
Mais ça ne marche pas non plus car à chaque autopostback d'une de mes liste ca renvoie sur l'autre Frame...
Donc je fais comme ceci :
Code :
|
Et le lien "test" joue le rôle d'un bouton de formulaire en fait...
Mais le problème ici c'est que les champs textes ne sont pas mis à jour et pris en compte dans ma recherche.
En espérant que j'ai été plus clair et que tu puisses m'aider.
Marsh Posté le 12-05-2004 à 12:14:12
confusion entre langage serveur et langage client...
1ère chose :
Code :
|
ok tu rajoutes le onclick qui sera traité en client... mais bon ça fait appel à la méthode go qui est en serveur... forcément ça risque pas de marcher... et tu restes au même endroit puisque la méthode go n'est pas appelée..
2ème chose :
le framework .NET est fait pour de base traiter les informations d'un formulaire sur la même page (relations SGBD..) ! et après tu fais seulement ta redirection...
bon dans le cas où des variables doivent absolument passer (c'est le cas ici visiblement) :
dc tu fais ça :
Code :
|
mais tu le fais dans la méthode appelée par le bouton côté serveur... bouton_onclick...
Marsh Posté le 12-05-2004 à 12:39:58
Oui, tu as totalement raison, j'ai fait des confusions ...
J'étais en train de faire ça...
Code :
|
Merci beaucoup en tous les cas.
Quel est à ton avis la meilleure solution ?
Je pense que c'est la tienne car je suis pas sûr que ça soit très "propre de générer.
Mais ton truc ça impliquerait qu'il faille appuyer sur 2 "boutons".
Un premier bouton pour enregister l'url puis le lien qui permet de transmettre les données à la FRAME (si j'ai bien compris bien sur..)
Marsh Posté le 12-05-2004 à 12:44:18
En fait, j'ai pas tout à fait l'impression d'avoir bien compris l'ASP.NET, j'ai l'impression que ce langage agit côté client alors que ce n'est à priori pas le cas.
Il utilise uniquement la gestion des évènements (PostBack...) pour déterminer ce qui se passe et l'ASP.NET ne fait que générer dynamiquement du Javascript.
Alors comment agir directement côté client ? Utiliser le bon vieux Javascript ?
Marsh Posté le 12-05-2004 à 12:49:07
nan ça agit côté serveur !!!
c un langage compilé serveur
après effectivement ça créé du javascript mais bon tu ne dois pas t'en soucier... quand je fais du .NET je ne regarde pas le js... tu peux très bien programmes sans t'en soucier.. c'est même conseillé...
essaie de bien comprendre comment se passe la gestion des événements avec le 1er affichage de la page, le postback et tout... et tu comprendras mieux comment tu dois faire de manière logique
quant aux coups des 2 clics sur le bouton, je ne vois pas pourquoi... tu peux tout faire d'un coup...
Marsh Posté le 12-05-2004 à 12:54:40
titione a écrit : nan ça agit côté serveur !!! |
Je vois pas comment puisque je dois obligatoirement cliquez sur un lien qui doit contenir l'attribut Target="dynamic"
Donc je dois d'abord générer le lien de la page vers lequel il pointe (en fonction de tous les paramètres du formulaires, contenu du textbox, index séléctionné sur la liste).
Marsh Posté le 12-05-2004 à 15:02:07
Une autre question rien à voir avec ce problème.
Est qu'il est possible de créer une "application" en ASP.NET qui permettrait de ne pas rafraichir la page tout en travaillant sur des changements d'états de listes.
Marsh Posté le 13-05-2004 à 11:22:23
Ouais bon c'est pas très clair, je voudrais que des listes déroulantes (de type DropDownList) interagissent entre elles.
Exemple : je choisis une catégorie dans la liste "catégorie" et les sous catégories correspondantes se chargent (en fonction de la catégorie séléctionnée) dans la liste "sous-catégorie".
Actuellement je travaille avec un Autopostback et un rafraichissement de la page (avec une BD & ADO.NET) et c'est pas ce qu'il y a de plus rapide..
(Je sais que c'est possible de ne pas rafraichir la page en J2EE et Javascript)
Marsh Posté le 13-05-2004 à 13:43:11
la problématique Web est la suivante :
dynamique en serveur --> php, .net etc..
dynamique en mode client seul --> javascript...
t'as pas trop le choix... faut que tu gères ça manuellement en javascript si tu ne veux pas du postback... ça implique qu'il faut charger toutes les données avant et là c'est ptet pas optimal non plus
Marsh Posté le 13-05-2004 à 21:11:53
Donc tout stocker les données dans un fichier .js puis gérer tout manuellement en Javascript
Pas terrible en effet, je vais laisser les Postback même si ca implique le rafraichissement de la Frame à chaque séléction..
Marsh Posté le 13-05-2004 à 21:14:36
Au fait ce qui est expliqué là dedans http://dotnet.developpez.com/faq/a [...] javascript
C'est crade comme méthode ou c'est tout à fait normal de générer du Javascript en ASP.NET ?
Marsh Posté le 14-05-2004 à 00:07:30
perso je trouve ça crade oui...
voilà comment j'essayais de travailler :
en code html : je mettais toutes les actions client
en code behind : les actions serveur..
là c du code client qu'on veut ajouter dc autant les écrire directement dans le code html... (bon c pas tjrs faisable...)
sinon très vite tout devient compliqué quand tu cherches un bout de code : est-il dans le html, dans le code behind, dans un script attaché etc...
faut essayer d'ordonner tout ça (ce qui est pas évident en .NET !!)
voilà ce que j'en pense
Marsh Posté le 14-05-2004 à 13:27:37
titione a écrit : perso je trouve ça crade oui... |
Ba moi pour appeller une fonction javascript (qui lancer une fenêtre popup) j'ai tout fait dans le fichier html (aspx) j'ai mis la fonction dans l'entête <head> et dans l'action du bouton j'ai mis OnClick=javascript:fonction();
Je trouve ça moins crade que de mettre du javascript dans du code C# et d'écrire du Javascript n'importe où sur la page HTML
En tous les cas merci de ton aide (dans ce topic et l'autre).
Marsh Posté le 11-05-2004 à 19:56:11
Salut à tous,
voilà mon problème, j'ai deux frames (et deux fichiers .aspx) :
- une (Frame 1) qui contient le formulaire ASP.NET (avec des listes "autopostback", des champs textes, des boutons radio...).
Formulaire qui est en fait un gros moteur de recherche par saisie de données ou parcours de listes..
- une autre frame (Frame 2) qui affiche les données en fonction des infos reçues par l'autre Frame.
Donc la Frame 1 doit transmettre des données à la Frame 2 par la méthode GET ou POST (pas d'importance là dessus).
Mon problème est que le Redirect.Response() ne permet pas de sélectionner une Frame et s'affiche donc dans la même Frame (Frame 1 au lieu de Frame 2).
Un bouton de formulaire "<asp : button ...>" ne marche pas même si je mets target="Frame2" dans la balise "<form>" puisque les listes qui sont en autopostback posent problèmes car elles submit automatiquement.
Si vous comprenez mon problème (je m'explique pas toujours très clairement ) que me suggérez vous ?
Message édité par pc2000 le 11-05-2004 à 20:00:17