Usuário com melhor resposta
The data source does not support server-side data paging.

Pergunta
-
Pessoal, Boa Tarde...
Preciso de uma ajuda, estou tentando fazer paginação no meu Gridview, configurei o Grid para fazer isso, mas sempre que rodo da o mesmo erro: The data source does not support server-side data paging.
Ja li na internet que datareader não funciona tem que ser um dataset, mas acho que estou fazendo errado... alguem pode me ajudar por favor???
Meu codigo com datareader:
protected void Calendar1_SelectionChanged1(object sender, EventArgs e)
{
DateTime data;
string sql;
SqlConnection conn = new SqlConnection("Data Source=10.95.1.36\\SQL2008;Initial Catalog=portalrfb;User ID=autnfc;password=autnfc");
data = Calendar1.SelectedDate;
string date = data.ToString("dd/MM/yyyy");
sql = "SELECT SUBSTRING(b.DTMOVTO,1,10) AS 'DTMOVTO', CASE WHEN b.TIPOMOV = 'E' THEN 'ENTRADA' ELSE 'SAIDA' END AS 'TIPOMOV', CASE WHEN b.TPPESSOA = 1 THEN 'FUNCIONARIO' WHEN b.TPPESSOA = 2 THEN 'VISITANTE' WHEN b.TPPESSOA = 3 THEN 'PRESTADOR DE SERVIÇO' ELSE 'TRANSPORTADOR DE CARGA' END AS 'TPPESSOA', B.RAZAOSOCIAL, B.NMPESSOA, CASE WHEN A.PLVEICOCRJU IN ('SUCESSO', 'SUCCESS') AND RTRIM(A.PLVEIC) <> '' AND RTRIM(COALESCE(A.PLVEICOCR,'')) <> '' AND RTRIM(A.PLVEIC) = RTRIM(COALESCE(A.PLVEICOCR,'')) THEN 'S' ELSE CASE WHEN RTRIM(A.PLVEIC) = '' THEN ' ' ELSE 'N' END END AS 'OCR PLACA', A.PLVEIC, CASE WHEN A.PLREB1OCRJU IN ('SUCESSO', 'SUCCESS') AND RTRIM(A.PLREB1) <> '' AND RTRIM(COALESCE(A.PLREB1OCR,'')) <> '' AND RTRIM(A.PLREB1) = RTRIM(COALESCE(A.PLREB1OCR,'')) THEN 'S' ELSE CASE WHEN RTRIM(A.PLREB1) = '' THEN ' ' ELSE 'N' END END AS 'OCR PLACA REB1', A.PLREB1, CASE WHEN A.PLREB2OCRJU IN ('SUCESSO', 'SUCCESS') AND RTRIM(A.PLREB2) <> '' AND RTRIM(COALESCE(A.PLREB2OCR,'')) <> '' AND RTRIM(A.PLREB2) = RTRIM(COALESCE(A.PLREB2OCR,'')) THEN 'S' ELSE CASE WHEN RTRIM(A.PLREB2) = '' THEN ' ' ELSE 'N' END END AS 'OCR PLACA REB2', A.PLREB2, B.IDEVENTO AS 'ID', B.DTMOVTO AS 'DATA E HORA' FROM branst027.portalrfb.dbo.ZRFB003 a, portalrfb.dbo.ZRFB002 b WHERE b.IDEVENTO = a.IDPORTAL AND (SUBSTRING(b.DTMOVTO,1,10) = '" + date + "') ORDER BY 1,2,3,4,5";
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
}Desde já Muito obrigado...
Luiz Carlos
Respostas
-
Opa sempre que você clica em algum número de página na seção Pager do gridview para realizar a página é disparado o evento PageIndexChanging, nesse evento você deve carregar o grid novamente e mudar o número da página.
Segue abaixo link com um exemplo
http://www.macoratti.net/10/04/aspn_gdv2.htm
Leonardo Lourenço Silva
- Marcado como Resposta LC-Locker terça-feira, 19 de março de 2013 17:01
Todas as Respostas
-
Nossa que código feio, principalmente o TSQL rs rs
Um DataReader é uma fonte de dados somente leitura e podemos ler somente para frente, uma vez que você leu um registro na posição 4 por exemplo, se quiser voltar 1 posição tem que carregar novamente o DataReader.
Antes de jogar no DataSource jogue as informações do DataReader dentro de um DataTable.
DataTable tabela = new DataTable(); tabela.Load(dr);
GridView1.DataSource = tabela;
GridView1.DataBind();
Leonardo Lourenço Silva
- Sugerido como Resposta Leonardo Lourenço Silva quarta-feira, 6 de março de 2013 19:24
-
Leonardo,
Obrigado pela resposta, estou iniciando em asp, por isso o codigo feio ahahah...
funcionou... mas!!! quando mudo de pagina ele da um erro:
The GridView 'GridView1' fired event PageIndexChanging which wasn't handled.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: The GridView 'GridView1' fired event PageIndexChanging which wasn't handled.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[HttpException (0x80004005): The GridView 'GridView1' fired event PageIndexChanging which wasn't handled.]
System.Web.UI.WebControls.GridView.OnPageIndexChanging(GridViewPageEventArgs e) +1484685
System.Web.UI.WebControls.GridView.HandlePage(Int32 newPage) +62
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +477
System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +210
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +176
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563Desde já obrigado
Luiz Carlos
-
Opa sempre que você clica em algum número de página na seção Pager do gridview para realizar a página é disparado o evento PageIndexChanging, nesse evento você deve carregar o grid novamente e mudar o número da página.
Segue abaixo link com um exemplo
http://www.macoratti.net/10/04/aspn_gdv2.htm
Leonardo Lourenço Silva
- Marcado como Resposta LC-Locker terça-feira, 19 de março de 2013 17:01