Bonjour,

(Ca n'aura pas tardé pour la question suivante ).

J'ai une page aspx avec une GridView dans laquelle je peux éditer mes lignes.

Voici le code de ma GridView :

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
 
<asp:GridView ID="IncidentsGridView" runat="server" AllowPaging="True" 
        AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="I_ID" 
        DataSourceID="IncidentsEntityDataSource" CellPadding="4" 
        ForeColor="#333333" GridLines="None" 
        onrowupdating="IncidentsGridView_RowUpdating" PageSize="7"  >
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
                DeleteText="Supprimer" EditText="Modifier" />
            <asp:BoundField DataField="I_ID" HeaderText="ID" ReadOnly="True" 
                SortExpression="I_ID" ItemStyle-Wrap="False" 
                ItemStyle-HorizontalAlign="Center" >
                <ItemStyle HorizontalAlign="Center" Wrap="False"></ItemStyle>
            </asp:BoundField>
 
            <asp:TemplateField HeaderText="Durée de l'incident">
                <ItemTemplate>
                    <asp:Label ID="DurationLabel" runat="server" Text='<%# Eval("I_DURATION") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
 
            <asp:TemplateField HeaderText="Site" SortExpression="SITE.S_SITE" ItemStyle-Wrap="False">
                <EditItemTemplate>
                    <asp:DropDownList ID="SiteDropDownList" runat="server" 
                        DataSourceID="SiteEntityDataSource" DataTextField="S_SITE" 
                        DataValueField="S_ID" oninit="SiteDropDownList_Init" SelectedValue='<%# Eval("I_SITE_ID") %>'>
                    </asp:DropDownList>
                    <asp:EntityDataSource ID="SiteEntityDataSource" runat="server" 
                        ConnectionString="name=RFCKPIEntities" DefaultContainerName="RFCKPIEntities" 
                        EnableFlattening="False" EntitySetName="SITE" 
                        Select="it.[S_ID], it.[S_SITE]">
                    </asp:EntityDataSource>
                </EditItemTemplate>              
 
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("SITE.S_SITE") %>'></asp:Label>
                </ItemTemplate>
 
                <ItemStyle Wrap="False"></ItemStyle>
            </asp:TemplateField>
</Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#1B7F75" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#1B7F75" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
    </asp:GridView>
Et mon EntityDataSource

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 <asp:EntityDataSource ID="IncidentsEntityDataSource" runat="server" 
        ConnectionString="name=RFCKPIEntities" DefaultContainerName="RFCKPIEntities" 
        EnableDelete="True" EnableFlattening="False" EnableUpdate="True" 
        EntitySetName="INCIDENTS" Include="SITE">
    </asp:EntityDataSource>
Donc en résumé, j'ai une gridview avec les données d'une table (INCIDENT) qui en mode édition possède une liste déroulante allant rechercher ses valeurs dans une autre table (SITE). Dans la DB, ma table INCIDENT a donc une clef étrangère vers SITE.

Ce code fonctionne très bien lorsque la valeur de site est remplie mais si j'ai null, j'obtiens l'erreur suivante quand je clique sur le bouton MODIFIER :

'SiteDropDownList' a un SelectedValue qui n'est pas valide, car il n'existe pas dans la liste des éléments.
Nom du paramètre : value

Pourriez-vous m'aider?