Altro che birra a fiumi, quà ci vuole una cascata di birra doppio malto
Allora esistono 2 approcci, il più semplice potrebbe risultare quello lato aspx.
Ti fornisco uno stralcio di codice per farti vedere l'approccio:
<asp:GridView runat="server" ID="grv1" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1"
onrowdatabound="grv1_RowDataBound">
<Columns>
<asp:BoundField DataField="categoria3" HeaderText="categoria3"
SortExpression="categoria3" />
<asp:TemplateField >
<ItemTemplate>
<asp:DropDownList runat="server" ID="ddlCategoria"
DataSourceID="SqlDataSource2" DataTextField="descrizione"
DataValueField="categoria_id">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:*********************** %>"
SelectCommand="SELECT * from *********** order by descrizione">
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:************** %>"
SelectCommand="SELECT top 300 * FROM ******** order by **********">
</asp:SqlDataSource>
Nell'esempio c'è un gridview che altre ai classici bound fields, deve renderizzare una tendina per riga che a sua volta viene bindata a parte.
L'esempio è semplice ma giocando con SqlDataSource e le aree TemplateField si fa tanto.
Per rendere editabili gli Item, gli devi accoppiare gli EditItemTemplate
Un saluto