Pergunta

Eu tenho um ListView que eu estou ligação de dados a uma coleção de objetos algo como isto:

int total;
List<Client> clientList = 
    clientData.GetClients(criteria, pageNum, pageSize, out total);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

Quando o pagenum, pageSize e parâmetros totais facilitar a paginação na camada de acesso a dados. Até aqui tudo bem.

Agora eu posso jogar um DataPager na página, aponte-o para o ListView e obter uma paginação decente UX. Há um pouco mais do que isso quando você está ligação programaticamente em vez de forma declarativa com um controle de fonte de dados, mas o problema aqui é que DataPager espera que todo o conjunto de resultados está sendo recuperado de cada vez, a partir do qual ele deve calcular paginação, por isso vê a única página de resultados retornados como o total dos registros disponíveis e é renderizado como se houvesse apenas uma página de resultados disponíveis. Em outras palavras, o cenário acima funciona bem com DataPager se mudar para uma versão não-paginação de GetClients:

List<Client> clientList = clientData.GetClients(criteria);
uxClientList.DataSource = clientList;
uxClientList.DataBind();

Obviamente desde a nossa camada de acesso a dados é gentil o suficiente para nos fornecer um método para recuperar uma página de cada vez, isso seria preferível recuperar todos os registros de cada vez. Seria bom se pudéssemos informar explicitamente DataPager do total de registros disponíveis por isso ainda poderia criar automaticamente a saída de paginação, mas requerem apenas uma página de cada vez para fazê-lo.

Eu não encontrei uma maneira fácil de fazer isso e eu não apareceu nada em pesquisas. É certo que eu atualmente não possuem uma compreensão profunda da implementação do DataPager, por isso espero que eu estou esquecendo algo.

Foi útil?

Solução

Você não ter esquecido nada.

Ao lidar com grandes conjuntos de resultados que você precisa virar paginação off e adicionar seus próprios controles de paginação.

Em minha experiência << <> >> suficiente. Ninguém passa pela 3ª página de qualquer maneira.

Outras dicas

Tenha um olhar para o ListViewPagedDataSource e sua AllowServerPaging propriedade, acho que pode ser o que você está procurando ..

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