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 :

dataset, gridview et webservice


Sujet :

ASP.NET

  1. #1
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut dataset, gridview et webservice
    Salut à tous, voilà d'abord l'architecture que je souhaite mettre en place, avec l'ordre des actions que je souhaiterais :

    1°) Webservice
    --------------
    • acces BDD
    • dataadapter
    • recupération du dataset original


    2°) Website
    -----------
    • recupération dataset envoyé par le webservice
    • bind avec un gridview
    • modification du DS avec le gridview
    • renvoi du dataset par le Webservice


    3°) Webservice (le même)
    -----------
    • recupération dataset envoyé par le website
    • mise à jour de la base avec le dataadapter




    --> ca fait 3j que je tente ca, de toutes les facons possible, et rien n'y fait... please help me !!! (sachant que j'ai déjà lu et relu les tutoriaux du site sur ADO)

    si vous avez des suggestions ou des exemples, je suis preneur.

    bye
    Nico (en mode désespéré )

  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
    Points : 8 734
    Points
    8 734
    Par défaut
    C'est quoi ton problème exactement?

  3. #3
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    en fait,
    j'arrive
    - à m'envoyer le dataset depuis le webservice
    - à binder le gridview dessus;
    - à modifier le DS au niveau du site web

    Par contre, une fois que j'ai fait ca, impossible au DS de prendre le chemin du retour, meme si je le renvoie au WS, je n'arrive pas à dire au dataadapter de réactualiser la BDD avec.

  4. #4
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    Tu peux nous montrer le code de la méthode de ton WS qui récupère le dataset + mise à jour en base?

    A+

  5. #5
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Salut,

    Tu peux nous montrer le code de la méthode de ton WS qui récupère le dataset + mise à jour en base?

    A+
    of course

    Code : 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    public string UpdateDatabase(DataSet ModifiedDS)
        {
            try
            {
     
                SqlCommand SelectCommand = new SqlCommand();
                SelectCommand.CommandType = CommandType.StoredProcedure;
                SelectCommand.CommandText = "SelectStoredProcedure";
                SelectCommand.Connection = MyConnectionString;
     
                #region DataAdapter
                SqlDataAdapter myDataAdapter = new SqlDataAdapter(SelectCommand);
     
    			//automatically create insert/update.delete commands
                SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(myDataAdapter);
                #endregion
     
                int ChangeCount = 0;
                myDataAdapter.RowUpdating += new SqlRowUpdatingEventHandler(myDataAdapter_RowUpdating);
                lock (objectToLock)
                {
                    try
                    {
     
                        ChangeCount = myDataAdapter.Update(ModifiedDS.Tables[myTablename]);
                    }
                    catch (Exception exc)
                    {
                        // Log error 
    					return " WS  ERROR -> " + exc.ToString();
                    }
                }
     
                return "ok with " + ChangeCount + " change" + (ChangeCount > 0 ? "s" : "");
            }
            catch (Exception exc)
            {
                     // Log error 
    				return " WS  ERROR -> " + exc.ToString();
            }
     
        }
     
        void myDataAdapter_RowUpdating(object sender, SqlRowUpdatingEventArgs e)
        {
            try
            {
                LOG("myDataAdapter_RowUpdating => " + e.StatementType.ToString() + " >> " + e.Command + " " + e.Status);
                if (e.Errors != null) LOG("myDataAdapter_RowUpdating -> " + e.Errors.ToString());
     
            }
            catch (Exception exc)
            {
                LOG("CATCH IN myDataAdapter_RowUpdating -> " + exc.ToString());
            }
        }
    et voilà...

  6. #6
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    En fait, je me suis trompé, le dataset envoyé n'a pas à etre actualisé, puisque ce n'est pas celui à jour; Le problème ne se situe donc pas de ce coté là, mais du coté de la modification du DS par le gridview

    voici la fonction :

    Code : 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
     void MyGridview_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int index = 0;
            List<object> newItems = new List<object>();
            foreach (TableCell tc in MyGridview.Rows[e.RowIndex].Cells)
            {
                try
                {
                    TextBox TB = (TextBox)tc.Controls[0];
                    newItems.Add(TB.Text);
                }
                catch (Exception) { }
            }
            MyGridview.EditIndex = -1;
            MyGridview.DataBind();
            MyDataset.Tables[MyDBTable].Rows[e.RowIndex].ItemArray = newItems.ToArray();
     
            LOG("MyGridview_RowUpdating --> " + index + " --> MyDataset.HasChanges() : " + MyDataset.HasChanges().ToString()); 		// ---> renvoit TRUE
     
            string result = Webservice.SendDatasetForUpdate(MyDataset);
            MyGridview.DataBind();
     
            MyDataset_Session = MyDataset;
     
        }
    et apparemment meme si le systeme me répond qu'il y a eu des changements, (HasChanges), il ne met pas le DS pas à jour. et donc évidemment ce DS envoyé au webservice n'est pas à jour non plus...qu'est-ce qui cloche ?


    bye
    Nico

  7. #7
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Points : 130
    Points
    130
    Par défaut
    Il me semble que tu dois sauvegarder les données changées dans le gridview, peut être avec un truc du style datagridview.save() (j'ai pas VS sur ce poste)

  8. #8
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    j'ai trouvé la fonction "UpdateRow" mais ca a pas l'air de marcher...

  9. #9
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Rebonjour, je m'autoréponds finalement; en fait, j'ai regardé partout sur le net (bon ok, presque partout) pendant des heures, puis j'ai vu un message intéressant qui disait (pour les anglophones...) :

    If it does most likely the updating is
    cancelled in a phase between RowUpdating and RowUpdated. For example, if
    you add following line in RowUpdating event handler the RowUpdated event
    will not get triggered.

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs
    e)
    {
    e.Cancel = true;
    }

    If there's no such code another possible reason I could think of is
    probably the custom GridView is bound on every postback, like below:

    protected void Page_Load(object sender, EventArgs e)
    {
    this.GridView1.DataBind();
    }

    It may cause the update not working and the state of the GridView will not
    shift back to readonly mode after Update button is clicked.
    Du coup, j'ai vérifié mon propre code, et j'avais moi aussi fait un à chaque postback...une fois le code modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!IsPostback)myGridview.databind();
    , ca marche tout de suite beaucoup mieux !


    bye et merci à tous
    Nico

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Pagination GridView et WebService
    Par JPelli dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/08/2011, 20h06
  2. dataset, gridview et webservice (2)
    Par Nicopilami dans le forum ASP.NET
    Réponses: 0
    Dernier message: 21/09/2009, 09h31
  3. Datarelation Dataset Gridview
    Par BATCHOS CON TEQUILA dans le forum C#
    Réponses: 9
    Dernier message: 14/01/2009, 16h10
  4. Question sur les WebService renvoyant un DataSet ?
    Par tazmania dans le forum Services Web
    Réponses: 16
    Dernier message: 07/06/2008, 20h29
  5. [C#|Gridview|Dataset] Remplir Gridview
    Par dumser1 dans le forum Windows Forms
    Réponses: 20
    Dernier message: 16/02/2006, 13h01

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