DataBind e Postback
-
06-07-2019 - |
Pergunta
Este é um general como é que questões de trabalho DataBind ...
Eu tenho uma página simples com um GridView que é vinculado (no código aspx) para um ObjectDataSource.
eu posso olhar na função Select () chamado pelo ObjectDataSource para ver que ele é chamado na carga inicial e em cada volta post. Eu tenho alguma lógica que acontece nas costas pós que afetarão os dados do GridView, e eu quero chamar GridView.DataBind () mais tarde no posto de volta, depois de eu ter feito algumas alterações.
Existe uma maneira de evitar a religação automática, que acontece em cada posto de volta? Isso significa que eu não posso usar um ObjectDataSource para esse controle?
Solução
Você está correto em que o grão fino controle que você está procurando não é possível e requer a trás código. objetos de origem de dados do ASP.NET são nada além de uma dor no a **. Você verá que como você usá-los você vai ter situações como esta surgindo uma e outra vez.
Alguns dos problemas que você vai encontrar são:
- Não fortemente digitado
- Inflexível (como você observou)
- Muddy-se o código de apresentação
Eu tomei a fazer todo o acesso aos dados no código por trás e não olhou para trás.
Outras dicas
Eu lutei com este automático de ligação, bem e pensei que eu postar minha solução aqui:
- remover o "DataSourceID" a partir da página ASPX, quando não é definido, não há automático de ligação
- definir o DataSourceID no CodeBehind somente quando DataBinding é necessária: "MyDataSource" myGridView.DataSourceID =;
- não chamar myGridView.DataBind () explicitamente, ligação de dados acontece automaticamente no PreRender
Levei um tempo para descobrir isso, mas agora wverything funciona bem.
Contexto
Eu uso o ObjectDataSource porque Handels todo o paginação e classificação do Gridview automaticamente para mim. Eu estou usando uma camada de dados com Linq2SQL e usar sua Skip () e Take () métodos para carregar apenas a quantidade de dados necessários para preencher uma página da GridView.
Usando o SelectMethod e SelectCountMethod do ObjectDataSource
Sim. Se você quiser esse tipo de controle sobre quando a ligação de dados acontece, você precisa fazê-lo no de trás código.