Bonjour à tous,

J'ai un petit problème de sauvegarde de donnée avec une grid ayant un template.

J'ai un datagrid contenant le détails des adresses de mes clients.

Chaque adresse à un type : facturation, livraison... (pour le reste tout ce passe bien)

Dans mon objet adresse, mon typeAdresse doit avoir une valeur unique qui est stocké dans une table de référence (pour éviter les facturation, faturation...)

j'ai donc en mode édition sur ma grid mon champ qui se transforme en dropdown qui elle est chargé avec la table de référence. Pour la sélection du bon item dans la list, il n'y a pas de problème. cependant, quand je valide ma mise à jour, je n'arrive pas a sauvegarder la modif dans mon objet.

Mes composants (grid et dropdown) sont chargé avec des entityDataSources.

Définition de ma grid
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
 
<asp:GridView ID="grdAddress" runat="server" CellPadding="4"  OnRowUpdating="GridView_RowUpdating"
                        ForeColor="#333333" GridLines="None" 
                        AutoGenerateColumns="False" DataKeyNames="Identifiant" 
                        DataSourceID="AddressDataSource" AllowSorting="True">
                        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                        <Columns>
                            <asp:TemplateField HeaderText="Type d' adresse" SortExpression="TypeAdresse" >
                                <ItemTemplate>
                                    <asp:Label ID="lblTypeAdresse" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.TypeAdresse") %>'></asp:Label>
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:DropDownList ID="ddlTypeAdresse" runat="server" DataSourceID="TpAdresseDataSource" DataTextField="Libelle" DataValueField="Libelle"
                                   SelectedValue='<%# DataBinder.Eval(Container, "DataItem.TypeAdresse") %>'>
                                    </asp:DropDownList>
                                </EditItemTemplate>
                            </asp:TemplateField>
                            <asp:BoundField DataField="Numero" HeaderText="Numéro/Boite" 
                                SortExpression="Numero" />
                            <asp:BoundField DataField="Rue" HeaderText="Rue" SortExpression="Rue" />
                            <asp:BoundField DataField="CodePostal" HeaderText="Code Postal" 
                                SortExpression="CodePostal" />
                            <asp:BoundField DataField="Ville" HeaderText="Ville" SortExpression="Ville" />
                            <asp:BoundField DataField="Pays" HeaderText="Pays" SortExpression="Pays" />
                            <asp:CommandField ShowEditButton="True" />
                            <asp:CommandField ShowDeleteButton="True" />
                        </Columns>
                        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <EditRowStyle BackColor="#999999" />
                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                    </asp:GridView>

Dans le code behind
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
protected void GridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        Control ctl = ((GridView)sender).Rows[e.RowIndex].FindControl("ddlTypeAdresse");
        string test = ((DropDownList)ctl).SelectedValue;
        object obj = DataBinder.GetDataItem(((GridView)sender).NamingContainer);
 
        ((Adresse)obj).TypeAdresse = test;
 
    }
mais ici, mon dataitem obj est toujours null. quelqu'un à une idée d'où vient le problème?

Si vous avez une autre façon de faire, je suis preneur vu que j'apprends le webform.

Merci d'avance.