Je viens de tester ton code, et je ne comprend pas pourquoi tu utilise tous ça.
J'ai essayer avec un simple code et cela fonctionne :
ASPX :
Code ASP.NET :
<asp:DataGrid runat="server" ID="dtGrid">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:DropDownList runat="server" ID="ddl_profils" AutoPostBack="true" OnSelectedIndexChanged="dtGrid_SelectedIndexChanged">
<asp:ListItem Value="1" Text="1"></asp:ListItem>
<asp:ListItem Value="2" Text="2"></asp:ListItem>
<asp:ListItem Value="3" Text="3"></asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
CODE BEHIND :
Code C# :
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
IList<string> lsString = new List<string>();
lsString.Add("cat 1");
lsString.Add("cat 2");
dtGrid.DataSource = lsString;
dtGrid.DataBind();
}
}
protected void dtGrid_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
string laValeur = ddl.SelectedValue;
}
(Le page_load me sert juste pour apporter des données)
En espérant t'avoir aidé, retiens moi au courant