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?

Foi útil?

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:

  1. remover o "DataSourceID" a partir da página ASPX, quando não é definido, não há automático de ligação
  2. definir o DataSourceID no CodeBehind somente quando DataBinding é necessária: "MyDataSource" myGridView.DataSourceID =;
  3. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top