El objetivo del control FormView de ASP.NET es mostrar un solo registro a la vez. Entonces, ¿cómo puedo vincularlo a un solo registro? Se queja de que¿Cómo puedo vincular un FormView ASP.NET a un solo registro?
El origen de datos es un tipo no válido. Debe ser un IListSource, IEnumerable o IDataSource.
Puedo envolver mi objeto en una lista si esa es la única solución. En esta aplicación, FormView está dentro de un control de usuario y estoy recuperando el objeto en un método público, es decir, no estoy usando un control de fuente de datos. No estoy haciendo ningún enlace de datos bidireccional aquí, solo estoy usando FormView en este caso para mantener una apariencia coherente.
Si fui por el libro y atado un FormView a una fuente de datos que devolvió una lista de registros, ¿recuperaría realmente todos los registros y solo mostraría el registro seleccionado?
Esto es lo que terminé en la implementación de una clase de utilidad:
public static IEnumerable<T> WrapInEnumerable<T>(T item)
{
return new T[] {item};
}
Cuando traté de implementar esto en mi entidad Linq2Sql todavía lanzó el error cuando c astándolo a una matriz. Probé la idea de la Lista de Sani Huttunen y esto funcionó. – rtpHarry
GOTCHA: Si está configurando manualmente la propiedad .DataSource, ¡no olvide el .DataBind() en la siguiente línea! Me dejó rascándome la cabeza durante unos minutos cuando no tuve ningún error, pero no se mostraron datos. Obvio en retrospectiva, pero normalmente uso ObjectDataSource por lo que no fue instintivo para mí – rtpHarry
Acabo de usar esto yo mismo con una pequeña diferencia. Lo convertí en un método de extensión al cambiar 'T item' por' this T item'. Gracias por la gran idea con esto. – Kirk