Pregunta

Esta es una forma general de cómo funciona DataBind preguntas ...

Tengo una página simple con un GridView que está vinculado (en el código aspx) a un ObjectDataSource.

Puedo mirar en la función Select () llamada por ObjectDataSource para ver que se llama en la carga inicial y en cada publicación posterior. Tengo cierta lógica que ocurre en las publicaciones posteriores que afectarán los datos de GridView, y quiero llamar a GridView.DataBind () más adelante en la publicación posterior, después de haber realizado algunos cambios.

¿Hay alguna manera de evitar que se vuelva a vincular automáticamente en cada publicación? ¿Significa esto que no puedo usar un ObjectDataSource para este control?

¿Fue útil?

Solución

Tienes razón en que el control de grano fino que estás buscando no es posible y requiere el código detrás. Los objetos de origen de datos de ASP.NET no son más que una molestia en a **. Descubrirás que a medida que los uses, aparecerán situaciones como esta una y otra vez.

Algunos de los problemas que encontrará son:

  • No fuertemente tipeado
  • Inflexible (como has notado)
  • Enloda el código de presentación

He empezado a hacer todo el acceso a datos en el código detrás y no he mirado atrás.

Otros consejos

También luché con este enlace automático y pensé en publicar mi solución aquí:

  1. eliminar el " DataSourceID " desde la página ASPX, cuando no está configurado, no hay enlace automático
  2. establezca DataSourceID en CodeBehind solo cuando se necesite DataBinding: myGridView.DataSourceID = " MyDataSource " ;;
  3. no llame a myGridView.DataBind () explícitamente, el enlace de datos ocurre automáticamente en PreRender

Me tomó un tiempo resolver esto, pero ahora todo funciona bien.

Context

Utilizo el ObjectDatasource porque maneja todos los paginación y clasificación de Gridview automáticamente para mí. Estoy usando una capa de datos con Linq2SQL y uso sus métodos Skip () y Take () para cargar solo la cantidad de datos necesarios para llenar una página de GridView.

Uso de SelectMethod y SelectCountMethod de ObjectDataSource

Sí Si desea ese tipo de control sobre cuándo se produce el enlace de datos, debe hacerlo en el código que se encuentra detrás.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top