Bien, creo que no te había entendido desde el principio lo que querías hacer. El error que te generaba antes te dice de forma resumida que queres asignarle un valor que no existe en la lista del DropDownList. Es decir que en realidad si intentas hacer lo que te dije mostrar el texto pero seleccionar el Id, intenta con esto:
Código:
<asp:TemplateField SortExpression="familia.Nombre" HeaderText="Familia">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" Runat="server"
DataSourceID="ObjectDataSourceFamilia"
DataTextField="Nombre" DataValueField="IdFamilia"
SelectedValue='<%# Bind("familia.IdFamilia") %>'>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# Bind("familia.Nombre")%>'
ID="Label1"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
De esta forma le estas diciendo que te muestre el Nombre y que te seleccione el Id (enmascarado por el texto). Si te truena en este caso intenta quitarle el SelectedValue. También proba el sort (ordenado de la columna) ahi nos avisas como te fue.
Saludos...