Bonjour,

En mode édition d'une ligne, j'aimerai mettre deux listes déroulantes dans les deux premières colonnes, la seconde dépendant de la sélection de la première.

La question sur laquelle je bloque, c'est :
Comment mettre un évènement OnSelectedChanged sur un DropDownList situé dans un EditItemTemplate (ou FooterTemplate d'ailleurs) d'un DataGrid ?

---

Si vous ne comprenez pas ou que vous avez besoin de plus d'informations, voici :

j'ai collé un datagrid et un dataset avec une table nommée "TABLE", deux champs "NATURE" et "VERSION" (des string) dans la webform.
Voilà le code aspx final allégé de mon DataGrid (j'ai enlevé qqs colonnes et le footer) :
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
<asp:DataGrid id="dgElec" runat="server" autogeneratecolumns="False" datamember="TABLE" datasource="<%# ds %>">
  <Columns>
    <!-- colonne "donnée", champ NATURE, transformée en colonne modèle pour mettre un DropDownList à la place du TextBox dans le mode édition -->
    <asp:TemplateColumn headertext="Nature">
      <ItemTemplate>
        <asp:Label id="Label1" runat="server" text='<%# DataBinder.Eval(Container, "DataItem.NATURE") %>'></asp:Label>
      </ItemTemplate>
      <EditItemTemplate>
        <asp:DropDownList id="ddlNature" runat="server" autopostback="True">
          <asp:ListItem value="VA8" selected="True">Vert A8</asp:ListItem>
          <asp:ListItem value="VA5">Vert A5</asp:ListItem>
          <asp:ListItem value="J">Jaune</asp:ListItem>
          <asp:ListItem value="B">Tarif Bleu</asp:ListItem>
       </asp:DropDownList>
     </EditItemTemplate>
   </asp:TemplateColumn>
   <!-- colonne "donnée", champ VERSION, transformée en colonne modèle pour mettre un DropDownList à la place du TextBox dans le mode édition -->
   <asp:TemplateColumn headertext="Version du tarif">
     <ItemTemplate>
	<asp:Label id="Label1" runat="server" text='<%# DataBinder.Eval(Container, "DataItem.VERSION") %>'></asp:Label>
     </ItemTemplate>
     <EditItemTemplate>
       <asp:DropDownList id="ddlVersion" runat="server"></asp:DropDownList>
     </EditItemTemplate>
   </asp:TemplateColumn>
   <!-- colonne "boutons" transformée en colonne modèle pour utiliser le pied -->
   <asp:TemplateColumn>
      <ItemTemplate>
        <asp:LinkButton id="LinkButton1" runat="server" causesvalidation="false" commandname="Edit" text="Modifier"></asp:LinkButton>
      </ItemTemplate>
      <EditItemTemplate>
        <asp:LinkButton id="LinkButton3" runat="server" commandname="Update" text="Mettre à jour"></asp:LinkButton>&nbsp;
        <asp:LinkButton id="LinkButton2" runat="server" causesvalidation="false" commandname="Cancel" text="Annuler"></asp:LinkButton>				      </EditItemTemplate>
    </asp:TemplateColumn>
  </Columns>
</asp:DataGrid>
Voilà, l'interface est faite, je sélectionne mon ddlNature qui est dans la 1ère colonne et l'EDI (BDS2005) ne m'affiche pas l'onglet "évènements" du contrôle !
y'a un truc qui doit manquer ...

Pourtant, l'article suivant assure bien que l'on peut le faire :
http://blog.coolforest.net/index.php...sts-dynamiques

Du coup, je le fais à la mimine :
- je modifie la ligne suivante de l'aspx :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <asp:DropDownList id="ddlNature" runat="server" autopostback="True" OnSelectedIndexChanged="ddlNature_SelectedIndexChanged">
- j'implémente la procédure dans le code-behind (déclarée en public sinon une exception survient) mais ça ne passe pas dans la procédure à l'exécution...

Est-ce que quelqu'un aurait une idée ?

Arnaud D.