.net data-binding refresh repeater databound

Cómo actualizar dinámicamente un control de repetidor de datos.NET



data-binding refresh (5)

Tengo un control de .NET repeater data-bound a data-bound en una lista. Como parte de la Item Collection del repetidor, tengo un "Botón Eliminar" que elimina efectivamente este elemento de lista actual.

Esto funciona, en código subyacente, puedo eliminar con éxito un elemento de la datasource de datasource del Repetidor .

Mi problema es este : cuando restablezco el datasource actualizado y llamo a MyRepeater.DataBind() nuevo, la interfaz Repeater no se actualiza con el elemento eliminado.

Estoy buscando el evento para esencialmente redibujar o actualizar el repetidor en función de la lista actualizada. Gracias por cualquier puntero o ejemplos.


¿Está alimentando la fuente de datos actualizada?

Si está configurando el origen de datos en código subyacente, debe configurarlo con datos actualizados y luego llamar al método DataBind.


Necesita llamar al método ''DataBind'' en su fuente de datos, luego llame a ''DataBind'' en su control Repeater.


Tuve una situación similar ... un repetidor vinculado a un xmlDataSource, ambos dentro de un UpdatePanel. Quería que el usuario escriba un nombre a la vez y luego haga clic en el botón "Agregar" para actualizar la lista en el repetidor.

Establecí "EnableViewState" en False en el repetidor y xmlDataSource, y establecí "EnableCaching" en xmlDataSource en False también. Establecí la propiedad Data de xmlDataSource, llamada DataBind para xmlDataSource, establecí la propiedad DataSourceID del repetidor y luego denominé DataBind para el repetidor. Tal vez fue exagerado ... pero funcionó. Tal vez esto ayude.

ACTUALIZACIÓN: descubrí que estableciendo EnableViewState en False en el control del repetidor, mi evento ItemCommand no se activaría. Pero creo que solo necesita establecer EnableViewState / EnableCaching en False para la fuente de datos ... He devuelto la configuración EnableViewState a True para el repetidor y ahora todo parece estar bien.


Forzar Databind normalmente se realiza cuando el DataBind automático se realiza en el evento PreRender .

Normalmente, si eliminó en el evento click, el repetidor debería actualizarse solo, ya que automáticamente en el preRender, los controles en la página son DataBind (). Aquí está lo que dice el documento de microsoft:

PreRender: antes de que ocurra este evento, cada control vinculado a datos cuya propiedad DataSourceID está configurada llama a su método DataBind.

fuente

Probablemente usted afectó Youritem.DataSource = List, pero MS sugiere hacer YourItem.DataSourceID = List.ID, o algo así.

Espero eso ayude


Me encontré con algo así con un Repeater Control y una fuente DataTable.

No había un método Refresh en DataTable, pero llamar a DataTable.EnableDynamicData (typeof (DataTable)) en la carga de la página inicial resolvió el problema.