none
The data source does not support server-side data paging. RRS feed

  • 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

    quarta-feira, 6 de março de 2013 17:30

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
    quarta-feira, 6 de março de 2013 19:55

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

    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) +5563

    Desde já obrigado


    Luiz Carlos

    quarta-feira, 6 de março de 2013 19:42
  • 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
    quarta-feira, 6 de março de 2013 19:55