IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Ecrire un formulaire d'édition manuellement en utilisant un sqldatasource


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut Ecrire un formulaire d'édition manuellement en utilisant un sqldatasource
    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.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Je sais pas ce que fais Alert.Show mais un Response.Redirect annule certainement son action

  3. #3
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut
    Voici le code de Alert:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static class Alert{
        public static void Show(string message){
            string cleanMessage = message.Replace("'", "\\'");
            string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
     
            Page page = HttpContext.Current.CurrentHandler as Page;
     
            if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")){
                page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script);
            }
        }
    }

    Ça ouvre une fenêtre de dialogue en javascript.

    L'opération côté serveur (response.request) écrase les opérations côtés client (le JS) ? Je pensais que le serveur attendrait le clic de confirmation de la part de l'utilisateur avant de continuer.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Le Response.Redirect a lieu avant d'envoyer la réponse au client donc ça risque pas de fonctionner

  5. #5
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut
    Ok je comprends mieux maintenant. Merci pour cet éclaircissement.

    As-tu une idée pour le formulaire en lui-même? J'avoue que mon code doit sembler un peu fouillis mais c'est à force d'essayer. J'ai mis le code qui en faisait un max. Il y a juste la dernière étape qui foire.

    Le formulaire se charge bien avec les données de la DB, mais si je modifie et que je sauve les données. Il les écrase avec NULL partout sauf à l'id.

    J'ai regardé pour les formparameter, normalement, il faudrait des <form></form> mais j'utilise une masterpage pour le design et il ne veut pas des forms imbriqués.

    PS: J'avais oublié de le signaler, mais j'utilise Visual Web Developper Express 2005 avec ASP.NET 2.0.

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu recharges pas tes données dans le PageLoad?

  7. #7
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut
    A quel moment ? Après le clic de l'utilisateur sur le bouton Modifier ?

    Non, je ne le fais pas. Je n'en avais pas eu besoin dans le formulaire d'insertion dans la DB. Faut-il le faire maintenant ? Si oui, pourquoi ? La procédure est identique à l'insert à ce moment là, non ? et comment fait-on ?

    Merci d'avance pour tes réponses et ta patience.

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Est-ce que tu fais qqchose dans le PageLoad de ta page?

  9. #9
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut
    Rien à part vérifier que l'utilisateur a bien les droits d'admin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void Page_Load(object sender, EventArgs e)
        {
            if (Roles.IsUserInRole("admin") == false)
            {
                Server.Transfer("/Projet/administration.aspx");
            }
        }

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/12/2011, 23h26
  2. manuel d'utilisation du "ecognition" en français
    Par kchikeche dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 24/09/2006, 02h05
  3. Réponses: 1
    Dernier message: 20/08/2006, 17h34
  4. Une table --> 2 sous formulaires d'édition ?
    Par Neilos dans le forum IHM
    Réponses: 2
    Dernier message: 20/06/2005, 16h10
  5. manuel d'utilisation de fonction
    Par SteelBox dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 11/10/2004, 01h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo