Bonjour,
je débute en asp.net et je dois réaliser un projet pour mes études. Petit pépin, je coince... Je cherche à améliorer l'affichage des formulaires, les gridviews,... c'est assez laid à voir comparé à ce qu'on peut faire soit-même en combinant de l'HTML/CSS,...
J'ai réussi à faire un formulaire d'insertion d'articles et j'essaye maintenant de faire le formulaire d'édition. Quasiment pareil sauf qu'on récupère les données dans la DB avant l'affichage. Cela fait un petit moment que je cherche et que je n'y arrive pas. Il récupère bien l'id de l'article à modifier mais il met NULL dans tout mes champs. Il n'arrive pas à récupérer les données passées en paramètre.
Je vous mets le code que j'ai actuellement, j'ai essayé les formparameters, les controlparameters,... Et j'utilise la datalist pour pourvoir lire les données dans la DB via le sqldatasource:
Code ASP.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [articles] WHERE ([id] = @id)" UpdateCommand="UPDATE [articles] SET [titre] = @titre, [contenu] = @contenu, [date_publication] = @date_publication, [introduction] = @introduction WHERE [id] = @original_id"> <UpdateParameters> <asp:FormParameter Name="titre" Direction="Input" FormField="txtTitre" /> <asp:FormParameter Name="date_publication" Direction="Input" FormField="txtDate" /> <asp:FormParameter Name="contenu" Direction="Input" FormField="txtContenu" /> <asp:FormParameter Name="introduction" Direction="Input" FormField="txtIntro" /> <asp:QueryStringParameter Name="original_id" Type="Int32" QueryStringField="article" /> </UpdateParameters> <SelectParameters> <asp:QueryStringParameter Name="id" QueryStringField="article" Type="Int32" /> </SelectParameters> </asp:SqlDataSource>
Le formulaire:
Code ASP.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <h2>Modifier l'article</h2> <asp:DataList ID="DataList1" runat="server" DataKeyField="id" DataSourceID="SqlDataSource1"> <ItemTemplate> <table runat="server"> <tr> <td>Titre: </td><td><asp:TextBox ID="txtTitre" runat="server" Text='<%# Eval("titre") %>'></asp:TextBox></td> </tr> <tr> <td>Date de publication: </td><td><asp:TextBox ID="txtDate" runat="server" Text='<%# Eval("date_publication") %>'></asp:TextBox></td> </tr> <tr> <td>Introduction: </td><td><asp:TextBox ID="txtIntro" runat="server" Text='<%# Eval("introduction") %>' Rows="5" TextMode="MultiLine" Width="500px"></asp:TextBox></td> </tr> <tr> <td>Contenu: </td><td><asp:TextBox ID="txtContenu" runat="server" Text='<%# Eval("contenu") %>' Rows="10" TextMode="MultiLine" Width="500px"></asp:TextBox></td> </tr> <tr> <td></td><td><asp:Button ID="btnModifier" runat="server" Text="Modifier" OnClick="btnModifier_Click" /></td></tr> <tr><td></td><td> <asp:RequiredFieldValidator ID="titreValidateur" runat="server" ControlToValidate="txtTitre" ErrorMessage="Le champ titre est requis <br />"></asp:RequiredFieldValidator> <asp:RequiredFieldValidator ID="dateValidateur" runat="server" ControlToValidate="txtDate" ErrorMessage="Le champ date est requis <br />"></asp:RequiredFieldValidator> <asp:RequiredFieldValidator ID="contenuValidateur" runat="server" ControlToValidate="txtContenu" ErrorMessage="Le champ contenu est requis <br />"></asp:RequiredFieldValidator></td></tr> </table> </ItemTemplate> </asp:DataList>
Et la fonction qui actionne la mise-à-jour:
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 protected void btnModifier_Click(object sender, EventArgs e) { SqlDataSource1.Update(); Alert.Show("Article bien mis à jour !"); Response.Redirect("/Projet/administration/index.aspx"); }
Bizarement, il ne m'affiche pas la popup (alert est une classe qui ouvre une popup javascript, elle est utilisée ailleurs et fonctionne) mais il me redirige bien vers la page d'accueil.
Où me suis planté?
Merci d'avance pour votre aide.![]()
Partager