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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut Methode Update d'un ObjectDataSource lié à un GridView - Faire le binding des propriétés de mon objet à Update
    Bonjour,

    Dans ma page web, je récupère des données que j'affiche dans un GridView.
    La source de données de mon GridView est un ObjectDataSource.

    Dans mon GridView, je gère l'édition :
    1. L'utilisateur peut sélectionner une ligne (via un ImageButton "Editer").
    2. La ligne sélectionnée passe en mode édition (les champs de la ligne sélectionnée passent en mode TextBox, et deux ImageBouton "Save" et "Cancel" apparaissent)
    3. Quand l'utilisateur appuie sur l'ImageBouton "Save", les changements effectués sur la ligne sont enregistrés (dans la gridView et en base de données).


    Ma source de données (ObjectDataSource)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:ObjectDataSource ID="odsListCriteriasDataSource" 
                              runat="server" 
                              DataObjectTypeName="BusinessLayer.BusinessClasses.ArticleCriteria"
                              TypeName="ObjetDataSourceBindingClass" 
                              SelectMethod="GetArticleCriteria"
                              UpdateMethod="UpdateArticleCriteria" 
                              onupdating="odsListCriteriasDataSource_Updating">
    </asp:ObjectDataSource>
    Ma GridView

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <asp:GridView runat="server" ID="MyGridView" DataSourceID="odsListCriteriasDataSource" AutoGenerateColumns="False">
    ...
    </asp:GridView>
    Le truc c'est que pour initialiser les propriétés de l'objet que je veux Update (ArticleCriteria), pour avoir leur valeur en fait, il faut que je fasse des #Bind.

    Echantillon du code dans mon GriDView

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <Columns>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Label ID="abcd" Text=' <%# Bind("idArticleCriteria") %>' runat="server"></asp:Label>
                            </ItemTemplate>
    Grâce aux #Bind, je peux récupérer toutes les valeurs des propriétés de mon objet et je peux les utiliser par la suite dans ma méthode d'Update.


    Je suis obligé de #Bind les différentes propriétés de mon objet via des propriétés de contrôles dans ma GridView.
    Je suis donc obligé de créer un contrôle pour chaque propriétésd'objet que je veux #Bind.

    Est il possible de #Bind des propriétés de mon objet sans passer par les propriétés de contrôle ?

    Merci de votre aide.



    J'espère que c'est clair, je manipule pas mal de nouveaux concept pour moi dans la page que j'essaye de réaliser. Des concepts que je ne maîtrise pas forcément pour le moment ..

  2. #2
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Ça ne répond pas à ma question initiale mais pour l'instant, c'est le seul moyen que j'ai trouvé pour "Bind" des propriétés pour mon objet. Et je suis obligé d'utiliser un label caché et utiliser sa propriété Text.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:GridView runat="server" ID="gvDisplayCriterias" DataSourceID="odsListCriteriasDataSource"
                    AutoGenerateColumns="False" AllowPaging="True" PageSize="20">
                    <Columns>
                         <asp:TemplateField>
                            <EditItemTemplate>
                                <asp:Label ID="lblIdCriteria" runat="server"  Text='<%# Bind("idArticleCriteria") %>' visible="false"></asp:Label>
                            </EditItemTemplate>
                        </asp:TemplateField>

  3. #3
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Tu veux en fait dans ta méthode Update avoir accès à l'objet réprésenté sur la ligne qui est en édition ?

    Tu devrais trouver ton bonheur avec le paramètre ObjectDataSourceMethodEventArgs.InputParameters de la méthode Update de l'ObjectDataSource.

    En espérant t'avoir aidé.

  4. #4
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Ce n'est pas exactement ce que je recherche à faire.
    Mais ce paramètre est utile effectivement. Je m'en sers justement dans l'évènement OnUpdating de mon objet, qui intervient juste avant la méthode Update (UpdateArticleCriteria() dans mon cas) de l'ObjectDataSource.
    Je m'en sers pour récupérer mon objet (e.ImputParameters[0] ) et modifier une de ses propriétés avant l'Update.

  5. #5
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Ok, dans ce cas je ne comprends pas trop ce que tu veux alors .

    Dans l'event OnUpdating tu arrives à récupérer et modifier les valeurs... Du coup jJe ne vois pas trop en quoi tu as besoin d'accéder de nouveau à ces valeurs dans l'event Update.

    Dans tous les cas, si tu regardes cette page MSDN, tu as ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     <asp:objectdatasource
          ID="ObjectDataSource2"
          runat="server"
          SelectMethod="GetEmployee"
          UpdateMethod="UpdateEmployeeAddress"
          OnUpdating="EmployeeUpdating"
          OnSelected="EmployeeSelected"
          TypeName="Samples.AspNet.CS.EmployeeLogic" >
          <SelectParameters>
            <asp:ControlParameter ControlID="DropDownList1" DefaultValue="-1" Name="empID" />
          </SelectParameters>
        </asp:objectdatasource>
    Et ceci :

    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
    public class EmployeeLogic
    {
        public static Array GetFullNamesAndIDs()
        {
            NorthwindDataContext ndc = new NorthwindDataContext();
    
            var employeeQuery =
                from e in ndc.Employees
                orderby e.LastName
                select new { FullName = e.FirstName + " " + e.LastName, EmployeeID = e.EmployeeID };
    
            return employeeQuery.ToArray();
        }
    
        public static Employee GetEmployee(int empID)
        {
            if (empID < 0)
            {
                return null;
            }
            else
            {
                NorthwindDataContext ndc = new NorthwindDataContext();
                var employeeQuery =
                    from e in ndc.Employees
                    where e.EmployeeID == empID
                    select e;
    
                return employeeQuery.Single();
            }
        }
    
        publicstaticvoid UpdateEmployeeAddress(Employee originalEmployee, string address, string city, string postalcode)
        {
            NorthwindDataContext ndc = new NorthwindDataContext();
            ndc.Employees.Attach(originalEmployee, false);
            originalEmployee.Address = address;
            originalEmployee.City = city;
            originalEmployee.PostalCode = postalcode;
            ndc.SubmitChanges();
        }
    }
    Tu peux voir comme accéder à ces valeurs dans la méthode UpdateEmployeeAddress.

    En espérant t'avoir aidé.

Discussions similaires

  1. Problème d'update dans un ObjectDataSource
    Par Colbix dans le forum C#
    Réponses: 0
    Dernier message: 07/12/2010, 10h14
  2. Réponses: 3
    Dernier message: 09/11/2010, 10h38
  3. Réponses: 5
    Dernier message: 30/11/2009, 11h14
  4. updater des données dans mon fichier excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/02/2007, 16h01
  5. Besoin des sources pour apt-get update ?
    Par byloute dans le forum Debian
    Réponses: 1
    Dernier message: 06/11/2006, 11h25

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