Domanda

Ho un ripetitore .NET che è associato a dati in un elenco. Come parte del Collection Item del ripetitore, ho un pulsante " Rimuovi " che rimuove efficacemente questo elemento List corrente.

Funziona, in code-behind posso rimuovere con successo un elemento dal datasource del Ripetitore .

Il mio problema è questo : quando ripristino il datasource aggiornato e chiamo MyRepeater.DataBind () di nuovo, il Repeater l'interfaccia non si aggiorna con l'elemento rimosso.

Sto cercando l'evento per ridisegnare o aggiornare essenzialmente il Ripetitore in base all'elenco aggiornato. Grazie per eventuali suggerimenti o esempi.

È stato utile?

Soluzione

Devi chiamare il metodo 'DataBind' sulla tua origine dati, quindi chiama 'DataBind' sul tuo controllo Repeater.

Altri suggerimenti

Stai alimentando l'origine dati aggiornata?

Se si imposta l'origine dati in code-behind, è necessario impostarla con dati aggiornati, quindi chiamare il metodo DataBind.

Mi sono imbattuto in qualcosa del genere con un controllo Repeater e una fonte DataTable.

Non c'era un metodo di aggiornamento in DataTable, ma chiamare DataTable.EnableDynamicData (typeof (DataTable)) al caricamento della pagina iniziale ha risolto il problema.

Ho avuto una situazione simile ... un ripetitore associato a un xmlDataSource, entrambi all'interno di un UpdatePanel. Volevo consentire all'utente di digitare un nome alla volta, quindi fare clic su " Aggiungi " per aggiornare l'elenco nel ripetitore.

Ho impostato " EnableViewState " su False sul ripetitore e su xmlDataSource e impostare " EnableCaching " anche su xmlDataSource su False. Ho impostato la proprietà Data di xmlDataSource, denominata DataBind per xmlDataSource, ho impostato la proprietà DataSourceID del ripetitore, quindi ho chiamato DataBind per il ripetitore. Forse era eccessivo ... ma ha funzionato. Forse questo aiuterà.

AGGIORNAMENTO: ho scoperto che impostando EnableViewState su False sul controllo del ripetitore, il mio evento ItemCommand non si attiva. Ma penso che devi solo abilitare EnableViewState / EnableCaching su False per l'origine dati ... Ho ripristinato l'impostazione EnableViewState su True per il ripetitore e ora tutto sembra a posto.

Il forzamento di Databind viene normalmente eseguito laddove DataBind automatico viene eseguito nell'evento PreRender .

Normalmente se hai fatto la rimozione nell'evento click, il ripetitore dovrebbe aggiornarsi da solo poiché automaticamente nel preRender, i controlli sulla pagina sono DataBind (). Ecco cosa dice il documento di Microsoft:

  

PreRender: prima che si verifichi questo evento, ogni controllo associato a dati la cui proprietà DataSourceID è impostata chiama il suo metodo DataBind.

source

Quindi probabilmente hai interessato Youritem.DataSource = List, ma MS suggerisce di eseguire YourItem.DataSourceID = List.ID o qualcosa del genere.

Spero che sia d'aiuto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top