Non era esattamente quello che mi serviva (manca l'associazione ai dati della datagrid e il riempimento), cumunque ho trovato un'altra soluzione, e la posto per i posteri :sexpulp:
grazie comunque della risp.
Allora,
nel file .aspx:
codice:
<asp:datagrid id="DataGridNews" runat="server" AutoGenerateColumns="False" Width="100%" OnItemDataBound="DataGridNews_ItemDataBound" DataKeyField="NewsID">
<Columns>
...
<asp:BoundColumn DataField="Status" HeaderText="Status" Visible="False"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Status">
<ItemTemplate>
<asp:DropDownList Runat="server" ID="DropDownStatus"></asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
...
</asp_datagrid>
OnItemDataBound è un evento generato dovo il bindingi di ogni riga del datagrid. E possibile utilizarlo per modificare l'aspetto di una riga.
La prima boundcolumn e nascosta e riporta il valore da assegnare alla dropdown, la seconda colonna contiene la dropdown.
nel file .cx c'è il gestore dell'evento:
codice:
protected void DataGridNews_ItemDataBound(object sender, DataGridItemEventArgs e)
{
try
{
LoadKeyValueDropDown(DDconnection,"NEW_STATUS", ((DropDownList)e.Item.FindControl("DropDownStatus")));
((DropDownList)e.Item.FindControl("DropDownStatus")).SelectedValue= ((TableCell)e.Item.Controls[6]).Text;
}
catch(Exception ex){Response.Write(ex.Message);}
}
loadKeyValue è una mia funzione che riempe la DropDown con dei valori da db
((DropDownList)e.Item.FindControl("DropDownStatus" )) e la dropdown, ricercata tramite id.
((TableCell)e.Item.Controls[6]).Text riporta il testo della 6 colonna che nel mio caso e quella con il valore da assegnare.
spero possa servire a qualcuno