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 :

[C#][2.0] : Comment updater un Dataset directement avec un ObjectDataSource


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut [C#][2.0] : Comment updater un Dataset directement avec un ObjectDataSource
    Pour réaliser des updates dans une DataTable à partir d'un DetailsView, peut-on utiliser un ObjectDataSource directement lié au TableAdapter de ma DataTable ?

    Que doit-on prendre comme methode update du TableAdapter ?

    La propriété DataObjectTypeName de l'ObjectDataSource se définit automatiquement en fonction de la signature de la méthode Update choisit..

    Mais si je prends par exemple Update(MaDataTable) j'ai une erreur de correspondance de nom de colonnes entre le DetailsView et les propriétés du DataTable..

    l'url ci-dessous permet d'en savoir un peu plus sur l'utilisation de DataObjectTypeName :

    MSDN : Using Parameters with Data Source Controls

    J'en retiens que MaDataTable ne fait pas l'affaire mais que parcontre MonDataTableRow lui serait nickel ..!

    ça ne fonctionne pas... et bizarrement le la méthode proposée dans le TableAdapter est Update(System.Data.DataRow) et nom Update(MonDataSet.MonDataTableRow)

    ci-dessous l'erreur : Exception Details: System.MissingMethodException: No parameterless constructor defined for this object.

    Et si je change DataObjectTypeName pour le namespace correspondant à MonDataTableRow j'obtiens la même erreur..

    Peut être y a t'il une meilleur manière de procéder ?

    j'essais tout de même de faire le moins de code possible et d'utiliser au maximum les possibilités du framework 2.0...

    Merci d'avance !!

    Stéphane

  2. #2
    Membre habitué

    Inscrit en
    Juin 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 142
    Points : 174
    Points
    174
    Par défaut
    No parameterless constructor defined for this object

    Ca sgnifie que ton object n'a pas de constructeur sans parametre

  3. #3
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut
    effectivement si je veux une instance de ma class MonDataTableRow il faut que je passse par une instance de MaDataTable et que j'invoke la méthode newMonDataTableRow().

    Comment faire....?

  4. #4
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut URL sur le sujet
    Bonjour,

    toujours confronté à mon pblm... j'essais d'utiliser directement un dataset avec mon ObjectDataSource pour réaliser des update/delete/insert dans une DataTable...

    Pour ceux que ça intéresse, ci-dessous une url qui explique l'intérêt et le fonctionnement de l'ObjectDataSource :

    ASP.NET 2.0 Quickstart Tutorials : ObjectDataSource

    Merci d'avance pour toute aide sur le sujet

    Stéphane

  5. #5
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut post sur le forum ASP.NET
    A priori je ne suis pas le seul à avoir ces difficultés...

    ASP.NET Forum : ObjectDataSource + GridView + DataSet + Update

    Michael Freidgeim's Blog : Editable GridView with ObjectDatasource and Update method parameters.

    les propriétés du Field contenant la clé primaire (visible et readonly) serait à l'origine du pblm...

    A voir ...

  6. #6
    Membre habitué Avatar de stephane.net
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 158
    Points
    158
    Par défaut workaround
    maintenant ça marche.

    A moins que quelqu'un me montre comment faire, je vais finalement partir du principe que je ne peux pas utiliser les méthodes Update proposées par TableAdapter de VS2005 car elles ne remplissent pas les 3 conditions évoqués dans le lien MSDN plus haut...


    Du coup,

    1) j'ai rajouté une QUERY à mon TableAdapter appelant ma procédure sp_update_madatatable et l'a appelé UpdateMaDataTable
    2) j'ai ensuite sélectionné dans mon ODS pour la méthode Update la nouvelle méthode de mon dataset UpdateMaDataTable

    là j'ai pu observer qu'il avait ajouté la liste des paramètres (pas besoin de faire la liaison explicitement avec les champs du DetailsView il comprend tout seul qui va avec qui... )

    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
     
        <div>
            <asp:DetailsView ID="dvwEntityInfos" runat="server" AutoGenerateRows="False"
                DataKeyNames="EntityId" DataSourceID="odsEntityInfos">
                <Fields>
                    <asp:BoundField DataField="EntityId" HeaderText="EntityId" ReadOnly="True" SortExpression="EntityId" />
                    <asp:BoundField DataField="EntityName" HeaderText="EntityName" SortExpression="EntityName" />
                    <asp:BoundField DataField="EntityParentId" HeaderText="EntityParentId" SortExpression="EntityParentId" />
                    <asp:BoundField DataField="EntityLevel" HeaderText="EntityLevel" SortExpression="EntityLevel" />
                    <asp:BoundField DataField="EntityExternalCode" HeaderText="EntityExternalCode" SortExpression="EntityExternalCode" />
                    <asp:BoundField DataField="EntityLocal" HeaderText="EntityLocal" SortExpression="EntityLocal" />
                    <asp:CommandField ShowEditButton="True" />
                </Fields>
            </asp:DetailsView>
        </div>        
            <asp:ObjectDataSource ID="odsEntityInfos" runat="server" 
                TypeName="Referential.Object.Business.Entities.EntitiesTableAdapters.EntityInfosTableAdapter"
                SelectMethod="GetAllEntitiesInfos" 
                UpdateMethod="UpdateEntityInfos">
                <UpdateParameters>
                    <asp:Parameter Name="EntityId" Type="Object" />
                    <asp:Parameter Name="EntityName" Type="String" />
                    <asp:Parameter Name="EntityParentId" Type="Object" />
                    <asp:Parameter Name="EntityLevel" Type="Int32" />
                    <asp:Parameter Name="EntityExternalCode" Type="String" />
                    <asp:Parameter Name="EntityLocal" Type="String" />
                </UpdateParameters>
            </asp:ObjectDataSource>
    j'ai bien laissé tout le paramétrage par défaut du Designer de VS2005 (y compris le ReadOnly="true" pour le BoundField recevant la clé primaire...)

    <= ça marche !

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

Discussions similaires

  1. Comment ouvrir un .RTF directement avec un TRichEdit ?
    Par Matt2094 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 13/09/2007, 08h09
  2. Comment rafraichir les tables directement après un INSERT ou UPDATE
    Par forzaxelah dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/07/2006, 15h01
  3. [VB.Net] Comment updater Dataset avec un OledbCommandBuilder ?
    Par dyree dans le forum Accès aux données
    Réponses: 3
    Dernier message: 04/07/2006, 13h50
  4. [TOMCAT] Comment empêcher l'accès direct aux fichiers
    Par thomine dans le forum Tomcat et TomEE
    Réponses: 17
    Dernier message: 14/04/2005, 10h19
  5. Comment cloner un dataset en delphi
    Par laurent82 dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/06/2004, 10h41

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