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