Detailsview dans VWD 2005 express

Messages postés
4
Date d'inscription
vendredi 25 août 2006
Statut
Membre
Dernière intervention
30 août 2006
-
Messages postés
4
Date d'inscription
vendredi 25 août 2006
Statut
Membre
Dernière intervention
30 août 2006
-
Bonjour à tous,

Je sèche actuellement sur une problématique que j'imagine liée à mon bisutage obligatoire de l'utilisation de Visual Web Dev 2005.

J'ai mis sur une page un detailswiew en default mode "Insert". Celui-ci est composé d'un certain nombre de champs demandant la saisie d'informations comme nom, prénom, lieu de naissance, etc.

J'ai remplacé le bouton de validation commandfield par un template field sous la forme suivante :

<asp:TemplateField>
      <InsertItemTemplate>
            <asp:Button
ID="InsertButton"
runat="server"
CausesValidation="True"
CommandName="Insert"
Text="VALIDER"
CssClass=bleunormal/>
      </InsertItemTemplate>
</asp:TemplateField>

Tout fonctionne bien. Les informations des champs rentrent bien dans la base Access (désolé).

Or, je cherche depuis de longues, très très longues journées, comment faire en sorte que le bouton de validation exécute 2 tâches :
1 - qu'il enregistre bien les données dans la base (ça c'est OK, ça marche)
2 - qu'il renvoie vers une nouvelle page remerciant l'internaute de s'être inscrit.

Voici ce que j'ai tenté en vain de faire :
- ajouter un postback dans la balise de l'asp:Button : ça ouvre bien à une nouvelle page, mais ça n'enregistre pas les données dans la base
- mettre le detailsview et l'accesssource entre 2 balises "form" avec une contrôle "action". Là en revanche, ça enregistre bien les données, mais ça ne renvoie vers aucune page.

Quelqu'un aurait-il une réponse ???

PLCS

6 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Membre
Dernière intervention
13 octobre 2010
29
Bonjour,

il suffit de t'abonner à l'evenement ItemInserted de ton FormView :-)


<hr />
Cyril - MVS - MCP
Messages postés
4
Date d'inscription
vendredi 25 août 2006
Statut
Membre
Dernière intervention
30 août 2006

Hello,

Merci de ta réponse...

Donc je mets entre les premières balises script, un code type :

Public Event ItemInserted () As DetailsviewEventHandler

ainsi qu'un "OnItemInserted" après la balise <gras>
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Membre
Dernière intervention
13 octobre 2010
29
Bonjour,


J'ai rien pigé :p


Cyril - MVS - MCP
Messages postés
4
Date d'inscription
vendredi 25 août 2006
Statut
Membre
Dernière intervention
30 août 2006

...il refuse l'expression "Void".

Du coups avec Sub au lieu de Void dans le script :











Protected



Sub
DetailsView1_ItemInserted(

ByVal
sender

As



Object
,

ByVal
e

As
System.EventArgs)Response.Redirect(


"index.aspx"
)


End



Sub





et dans le detailsview



<





asp
:
DetailsView
ID
="DetailsView1"
OnItemInserted
="DetailsView1"



Il renvoie un message d'erreur disant :



Erreur 1 La méthode 'Protected Dim WithEvents DetailsView1 As System.Web.UI.WebControls.DetailsView' n'a pas la même signature que le délégué 'Delegate Sub DetailsViewInsertedEventHandler(sender As Object, e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs)'. 

PLCS
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Membre
Dernière intervention
13 octobre 2010
29
si t'es en VB

protected sub blabla(...) handles DetailsView1.ItemInserted

rien besoin de modifier au niveau de la page html

<hr />Cyril - MVS - MCP
Messages postés
4
Date d'inscription
vendredi 25 août 2006
Statut
Membre
Dernière intervention
30 août 2006

Merci pour ta réponse.

En fait, j'ai essayé à plusieurs reprises mais quelque chose bloque :

Voici le script que j'ai mis

<

asp:Content
ID="Content1"
ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server"><

script
language="javascript"
type="text/javascript">

<script
runat=server>

Protected
Sub DetailsView1_ItemInserted(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles DetailsView1.ItemInserted Response.Redirect(
"index.aspx")

End
Sub</

script>

puis dans le controle detailsview :

<

asp:DetailsView
DefaultMode=Insert
ID="DetailsView1"
OnItemInserted
="DetailsView1"
runat="server"
AutoGenerateRows="False"
DataKeyNames="URL"

DataSourceID="AccessDataSource2"
Height="50px"
HorizontalAlign="Center"
Width="95%"
CellPadding="5">et VWD affiche alors 2 erreurs portant sur la ligne du script :
La première :
Erreur 1 La méthode 'Protected Sub DetailsView1_ItemInserted(sender As Object, e As System.EventArgs)' ne peut pas gérer l'événement 'Public Event ItemInserted(sender As Object, e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs)', car ils n'ont pas la même signature. C:\MY FILES\ESSAI\echange-de-liens-fonds-de-commerce-sub.aspx 28 119 C:\MY FILES\ESSAI\

La deuxième :
Erreur 2 Fin d'instruction attendue. C:\MY FILES\ESSAI\echange-de-liens-fonds-de-commerce-sub.aspx 28 132 C:\MY FILES\ESSAI\

Là, je sèche grave

PLCS