Como dinamicamente atualização um .NET databound repetidor controle
-
19-08-2019 - |
Pergunta
Eu tenho um controle .NET repeater
que é data-bound
a uma lista. Como parte do Item Collection
do repetidor, eu tenho um "botão Remover" que efetivamente remove este elemento lista atual.
Isso funciona, em code-behind eu posso com sucesso remover um item da datasource
do Repeater .
Meu problema é o :. quando eu reiniciar o datasource
e chamada MyRepeater.DataBind()
atualizado novamente, o Repeater interface não atualizar com o item removido
Eu estou procurando o evento para redesenhar ou atualizar essencialmente o Repeater com base na lista atualizada. Obrigado por qualquer ponteiros ou exemplos.
Solução
Você precisa chamar o método 'DataBind' no seu fonte de dados, então Chamada de 'DataBind' no seu controle Repeater.
Outras dicas
Você está alimentando a fonte de dados atualizados?
Se você estiver configurando fonte de dados em código-behind, você precisará configurá-lo com dados atualizados, em seguida, chamar o método DataBind.
Eu corri para algo parecido com um controle Repeater e uma fonte DataTable.
Não havia um método de actualização na DataTable, mas chamar DataTable.EnableDynamicData (typeof (DataTable)) no carregamento da página inicial resolveu o problema.
Eu tinha uma situação semelhante ... um repetidor vinculado a um XmlDataSource, tanto dentro de um UpdatePanel. Eu queria que o usuário digite um nome de cada vez, em seguida, clicar em um botão "Adicionar" para atualizar a lista no repetidor.
eu definir "EnableViewState" para False no repetidor eo XmlDataSource e set "EnableCaching" na XmlDataSource para False também. I definir a propriedade de Dados da XmlDataSource, chamado DataBind para o XmlDataSource, defina a propriedade DataSourceID do repetidor, então chamado DataBind para o repetidor. Talvez tenha sido um exagero ... mas funcionou. Talvez isto ajude.
UPDATE: eu descobri que através da criação EnableViewState para False no controlo repetidora, meu evento ItemCommand não iria fogo. Mas eu acho que você só precisa definir EnableViewState / EnableCaching para Falso para a fonte de dados ... Voltei a configuração EnableViewState como True para o repetidor e agora tudo parece bem.
forçando vincular normalmente é feito onde o DataBind automática é feita no PreRender evento.
Normalmente, se você fez a remover no evento de clique, o repetidor deve atualizar por si só, uma vez automaticamente na PreRender, controles na página são DataBind (). Aqui está o que o doc de dizer Microsoft:
PreRender:. Antes deste evento ocorre cada dado controle ligado cuja propriedade DataSourceID é conjunto chama seu método DataBind
Então, provavelmente você afetada Youritem.DataSource = List, mas MS sugiro fazer YourItem.DataSourceID = List.ID, ou algo parecido.
Hope isso ajuda