OVH Cloud OVH Cloud

Submit dans datagrid vers autre page ?

9 réponses
Avatar
Lionel
Bonjour,

J'ai un datagrid dans ma page toto1.aspx.
Je voudrais, lorsque l'utilisateur clique sur le bouton Editer (balise
<asp:EditCommandColumn> par exemple) qu'il soit dirigé vers toto2.aspx avec
le contenu de la première colonne passé comme paramètre (methode POST).
Or, le datagrid doit être dans un FORM en runat=SERVER.
Du coup, quoique je mette dans *action=* dans le FORM, c'est ignoré,
puisqu'il met par défaut le nom de la page dans lequel il est contenu.
Je n'ai trouvé nulle part de documentation à ce sujet, cela était très
facile en ASP, je dois mal m'y prendre, quelqu'un pourrait-il m'aiguiller
??!

Merci !

9 réponses

Avatar
Joël Descombes
Le mieux est de faire un Transfert coté serveur, plutôt que de faire ça.


"Lionel" a écrit :

Bonjour,

J'ai un datagrid dans ma page toto1.aspx.
Je voudrais, lorsque l'utilisateur clique sur le bouton Editer (balise
<asp:EditCommandColumn> par exemple) qu'il soit dirigé vers toto2.aspx avec
le contenu de la première colonne passé comme paramètre (methode POST).
Or, le datagrid doit être dans un FORM en runat=SERVER.
Du coup, quoique je mette dans *action=* dans le FORM, c'est ignoré,
puisqu'il met par défaut le nom de la page dans lequel il est contenu.
Je n'ai trouvé nulle part de documentation à ce sujet, cela était très
facile en ASP, je dois mal m'y prendre, quelqu'un pourrait-il m'aiguiller
??!

Merci !






Avatar
Lionel
Merci de votre réponse.
D'accord, je vois comment récupérer la valeur, pas de problème.
Mais c'est justement le transfert côté serveur que je ne sais pas faire.
Je ne vois qu'un Response.redirect, et dans ce cas, je suis obligé de passer
les valeurs récupérées dans l'URL vers la seconde page, or je voudrais
éviter cela !

Merci !
Avatar
Joël Descombes
Tout simplement Page.Server.Transfert( ... )

"Lionel" a écrit :

Merci de votre réponse.
D'accord, je vois comment récupérer la valeur, pas de problème.
Mais c'est justement le transfert côté serveur que je ne sais pas faire.
Je ne vois qu'un Response.redirect, et dans ce cas, je suis obligé de passer
les valeurs récupérées dans l'URL vers la seconde page, or je voudrais
éviter cela !

Merci !





Avatar
Joël Descombes
Il y a moyen de transferer vers une autre Page tout en ayant accès aux
valeurs de la page d'origine, justement avec Transfert.
Le MSDN explique bien ça, c'est trop long à expliquer.

"Lionel" a écrit :

Merci de votre réponse.
D'accord, je vois comment récupérer la valeur, pas de problème.
Mais c'est justement le transfert côté serveur que je ne sais pas faire.
Je ne vois qu'un Response.redirect, et dans ce cas, je suis obligé de passer
les valeurs récupérées dans l'URL vers la seconde page, or je voudrais
éviter cela !

Merci !





Avatar
Lionel
Ok merci je vais voir tout ça !

"Joël Descombes" a écrit dans le
message de news:
Il y a moyen de transferer vers une autre Page tout en ayant accès aux
valeurs de la page d'origine, justement avec Transfert.
Le MSDN explique bien ça, c'est trop long à expliquer.

"Lionel" a écrit :

> Merci de votre réponse.
> D'accord, je vois comment récupérer la valeur, pas de problème.
> Mais c'est justement le transfert côté serveur que je ne sais pas faire.
> Je ne vois qu'un Response.redirect, et dans ce cas, je suis obligé de


passer
> les valeurs récupérées dans l'URL vers la seconde page, or je voudrais
> éviter cela !
>
> Merci !
>
>
>


Avatar
Lionel
Ok, mais d'après ce que je vois, je suis obligé de passer mes paramètres
dans l'URL, ce que justement je voudrais éviter.
Je cherche à passer la valeur sélectionnée d'une ligne d'un datagrid vers
une autre page mais sans passer par *page2.asp?x#*, je voudrais passer les
arguments par les entêtes http comme avec un bon vieux POST sous ASP.
Avatar
TOny
J'ai posé presque la même question un peu plus haut (sujet : submit & co).
J'ai commencé à utiliser server.transfer (sans t) et effectivement la
redirection s'effectue.
Seulement je ne suis pas sûr que cette méthode soit faite pour ça et d'autre
part je n'arrive pas à récupérer une valeur de ma page1 !
Je ne comprends pas que le sujet ne soit pas plus traité dans le sens où en
asp "submit" et "request" font parti du B-A-BA !
Moi je veux bien tout passer par l'url mais je trouve que l'on régresse et a
priori le nombre de caractères d'une url est limité.
A suivre

"Lionel" a écrit dans le message de news:
%
Ok merci je vais voir tout ça !

"Joël Descombes" a écrit dans le
message de news:
Il y a moyen de transferer vers une autre Page tout en ayant accès aux
valeurs de la page d'origine, justement avec Transfert.
Le MSDN explique bien ça, c'est trop long à expliquer.

"Lionel" a écrit :

> Merci de votre réponse.
> D'accord, je vois comment récupérer la valeur, pas de problème.
> Mais c'est justement le transfert côté serveur que je ne sais pas
> faire.
> Je ne vois qu'un Response.redirect, et dans ce cas, je suis obligé de


passer
> les valeurs récupérées dans l'URL vers la seconde page, or je voudrais
> éviter cela !
>
> Merci !
>
>
>






Avatar
Joël Descombes
N'importe quoi. La solution Transfer est une très bonne solution.
En gros:
- il faut déjà que sur la page d'origine les propriétés auquelles on
souhaite accéder soient publiques.
- ne pas oublier de désactiver le enableViewStateMac, sinon ça marche pas.
- dans la 2ème page, caster la valeur de Page.Context.Handler en
PageD'origine et accéder aux propriétés publiques de la page d'origine.
Bref, si j'ai pas fait d'erreur ça devrait être tout bon.
Mais, le mieux encore une fois est de jeter un oeil sur le MSDN qui explique
bien mieux que moi cette solution.

"TOny" a écrit :

J'ai posé presque la même question un peu plus haut (sujet : submit & co).
J'ai commencé à utiliser server.transfer (sans t) et effectivement la
redirection s'effectue.
Seulement je ne suis pas sûr que cette méthode soit faite pour ça et d'autre
part je n'arrive pas à récupérer une valeur de ma page1 !
Je ne comprends pas que le sujet ne soit pas plus traité dans le sens où en
asp "submit" et "request" font parti du B-A-BA !
Moi je veux bien tout passer par l'url mais je trouve que l'on régresse et a
priori le nombre de caractères d'une url est limité.
A suivre

"Lionel" a écrit dans le message de news:
%
> Ok merci je vais voir tout ça !
>
> "Joël Descombes" a écrit dans le
> message de news:
>> Il y a moyen de transferer vers une autre Page tout en ayant accès aux
>> valeurs de la page d'origine, justement avec Transfert.
>> Le MSDN explique bien ça, c'est trop long à expliquer.
>>
>> "Lionel" a écrit :
>>
>> > Merci de votre réponse.
>> > D'accord, je vois comment récupérer la valeur, pas de problème.
>> > Mais c'est justement le transfert côté serveur que je ne sais pas
>> > faire.
>> > Je ne vois qu'un Response.redirect, et dans ce cas, je suis obligé de
> passer
>> > les valeurs récupérées dans l'URL vers la seconde page, or je voudrais
>> > éviter cela !
>> >
>> > Merci !
>> >
>> >
>> >
>
>





Avatar
TOny
Désolé Joël je ne voulais pas que tu crois que je remettais en doute tes
explications.
Seulement c'est parfois énervant de croire qu'il y a un semblant de
similitude entre asp et asp.net.

Pour Lionel, j'arrive à faire ce que je veux de la manière suivante (j'ai
effectivement trouvé ça dans MSDN mais ça a été fastidieux)

======= page1.aspx
== remarque qu'il y a un nom de classe déclaré en haut
== du coup ta page devient un objet auquel tu attribues une propriété qui te
servira en page2
== la soumission s'effectue avec server.tranfer

<%@ Page Language="vb" Debug="true" ClassName="page1" %>
<html>

<head>
</head>

<script runat="server">
Public ReadOnly Property PageProperty() As String
Get
Return ch.Text
End Get
End Property
</script>

<body bgcolor="#ffffff">
<form runat="server">
<asp:TextBox id="ch" runat="server" text="hello" />
<br>
<asp:Button OnClick="ButtonClicked" Text="Go" runat=server />
</form>

<script>
Sub ButtonClicked(sender As Object, e As EventArgs)
Server.Transfer("page2.aspx")
End Sub
</script>

====== page2.aspx
== remarque la balise référence en haut de page
== dans le load tu pointes vers le context de la page1 en faisant appel au
nom de la classe

<%@ Page Language="vb" Debug="true" %>
<%@ Reference Page="page1.aspx" %>
<head>
</head>

<script runat="server">
Sub Page_Load(obj As Object, E As EventArgs)

dim fp as page1

If Not IsPostBack Then
fp = CType(Context.Handler, critere)
End If

response.write(fp.PageProperty())

End Sub
</script>

<html>
<body>
-
</body>
</html>

Et voilà !
Il me reste 2 questions en suspens :
1. Peut-on déclarer de manière directe qu'un champ est "public" (sans passer
par property) ?
2. Comment fait-on pour un transfer dans une nouvelle fenetre ?

Tony

"Joël Descombes" a écrit dans le
message de news:
N'importe quoi. La solution Transfer est une très bonne solution.
En gros:
- il faut déjà que sur la page d'origine les propriétés auquelles on
souhaite accéder soient publiques.
- ne pas oublier de désactiver le enableViewStateMac, sinon ça marche pas.
- dans la 2ème page, caster la valeur de Page.Context.Handler en
PageD'origine et accéder aux propriétés publiques de la page d'origine.
Bref, si j'ai pas fait d'erreur ça devrait être tout bon.
Mais, le mieux encore une fois est de jeter un oeil sur le MSDN qui
explique
bien mieux que moi cette solution.

"TOny" a écrit :

J'ai posé presque la même question un peu plus haut (sujet : submit &
co).
J'ai commencé à utiliser server.transfer (sans t) et effectivement la
redirection s'effectue.
Seulement je ne suis pas sûr que cette méthode soit faite pour ça et
d'autre
part je n'arrive pas à récupérer une valeur de ma page1 !
Je ne comprends pas que le sujet ne soit pas plus traité dans le sens où
en
asp "submit" et "request" font parti du B-A-BA !
Moi je veux bien tout passer par l'url mais je trouve que l'on régresse
et a
priori le nombre de caractères d'une url est limité.
A suivre

"Lionel" a écrit dans le message de news:
%
> Ok merci je vais voir tout ça !
>
> "Joël Descombes" a écrit dans
> le
> message de news:
>> Il y a moyen de transferer vers une autre Page tout en ayant accès aux
>> valeurs de la page d'origine, justement avec Transfert.
>> Le MSDN explique bien ça, c'est trop long à expliquer.
>>
>> "Lionel" a écrit :
>>
>> > Merci de votre réponse.
>> > D'accord, je vois comment récupérer la valeur, pas de problème.
>> > Mais c'est justement le transfert côté serveur que je ne sais pas
>> > faire.
>> > Je ne vois qu'un Response.redirect, et dans ce cas, je suis obligé
>> > de
> passer
>> > les valeurs récupérées dans l'URL vers la seconde page, or je
>> > voudrais
>> > éviter cela !
>> >
>> > Merci !
>> >
>> >
>> >
>
>