Pregunta

Tengo un control .NET repeater que está enlazado a datos a una Lista. Como parte de la Colección de elementos del repetidor, tengo un " Eliminar botón " que elimina efectivamente este elemento de la lista actual.

Esto funciona, en el código subyacente puedo eliminar con éxito un elemento del datasource del Repeater .

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

Estoy buscando el evento para volver a dibujar o actualizar el Repetidor en función de la Lista actualizada. Gracias por cualquier puntero o ejemplo.

¿Fue útil?

Solución

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

Otros consejos

¿Está alimentando la fuente de datos actualizada?

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

Me encontré con algo así con un control repetidor y una fuente DataTable.

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

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

Configuré " EnableViewState " False en el repetidor y xmlDataSource, y establezca " EnableCaching " en xmlDataSource to False también. Establecí la propiedad Data del xmlDataSource, llamada DataBind para el xmlDataSource, configuré la propiedad DataSourceID del repetidor, luego llamé DataBind para el repetidor. Tal vez eso fue excesivo ... pero funcionó. Quizás esto ayude.

ACTUALIZACIÓN: descubrí que al establecer EnableViewState en False en el control del repetidor, mi evento ItemCommand no se dispararí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 donde el DataBind automático se realiza en el evento PreRender .

Normalmente, si realizó la eliminación en el evento de clic, el repetidor debería actualizarse por sí mismo, ya que automáticamente en preRender, los controles en la página son DataBind (). Esto es lo que dice el documento de Microsoft:

  

PreRender: antes de que ocurra este evento, cada control enlazado a datos cuya propiedad DataSourceID se establece llama a su método DataBind.

fuente

Entonces probablemente haya afectado Youritem.DataSource = List, pero MS sugiere hacer YourItem.DataSourceID = List.ID, o algo así.

Espero que ayude

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