none
Exportar a excel un DataSet con paginaciòn personalizada c# RRS feed

  • Pregunta

  • Hola alguien me podría ayudar, tengo un gridview el cual tiene una paginacion desde sql server debido a que son muchisimos datos, pero al momento de exportar solo me guarda la primer pagina. Para la paginacion utilizo un datalist, agradeceria mucho su ayuda...

    protected void cargarcontenedores(int currentPage)
            {
                int pageSize = 15;
                int _TotalRowCount = 0;
                string _ConStr = ConfigurationManager.ConnectionStrings["Leidy"].ConnectionString;
                using (SqlConnection con = new SqlConnection(_ConStr))
                {
                    SqlCommand cmd = new SqlCommand("DatosContenedores", con);
                    cmd.CommandTimeout = 300;
                    cmd.CommandType = CommandType.StoredProcedure;
                    int startRowNumber = ((currentPage - 1) * pageSize) + 1;
                    cmd.Parameters.AddWithValue("@PatenteAduanal", DropDownList1.SelectedValue);
                    cmd.Parameters.AddWithValue("@ClaveSecAduanera", DropDownList2.SelectedValue);
                    cmd.Parameters.AddWithValue("@PageIndex", startRowNumber);
                    cmd.Parameters.AddWithValue("@PageSize", pageSize);
                    SqlParameter parTotalCount = new SqlParameter("@RecordCount", SqlDbType.Int);
                    parTotalCount.Direction = ParameterDirection.Output;
                    cmd.Parameters.Add(parTotalCount);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds);

                    _TotalRowCount = Convert.ToInt32(parTotalCount.Value);
                    GridView1.DataSource = ds;
                    GridView1.DataBind();
                    GenerarPaginas1(_TotalRowCount, pageSize, currentPage);

                }
            }

            public void GenerarPaginas1(int totalRowCount, int pageSize, int currentPage)
            {

                int totalLinkInPage = 10;
                int totalPageCount = (int)Math.Ceiling((decimal)totalRowCount / pageSize);
                int startPageLink = Math.Max(currentPage - (int)Math.Floor((decimal)totalLinkInPage / 2), 1);
                int lastPageLink = Math.Min(startPageLink + totalLinkInPage - 1, totalPageCount);
                if ((startPageLink + totalLinkInPage - 1) > totalPageCount)
                {
                    lastPageLink = Math.Min(currentPage + (int)Math.Floor((decimal)totalLinkInPage / 2), totalPageCount);
                    startPageLink = Math.Max(lastPageLink - totalLinkInPage + 1, 1);
                }
                List<ListItem> pageLinkContainer = new List<ListItem>();
                if (startPageLink != 1)
                    pageLinkContainer.Add(new ListItem("Primero", "1", currentPage != 1));
                for (int i = startPageLink; i <= lastPageLink; i++)
                {
                    pageLinkContainer.Add(new ListItem(i.ToString(), i.ToString(), currentPage != i));

                }

                if (lastPageLink != totalPageCount)
                    pageLinkContainer.Add(new ListItem("Ultimo", totalPageCount.ToString(), currentPage != totalPageCount));
                dlPager1.DataSource = pageLinkContainer;
                dlPager1.DataBind();
            }
            protected void dlPager_ItemCommand1(object source, DataListCommandEventArgs e)
            {
                if (e.CommandName == "PageNo")
                {
                    cargarcontenedores(Convert.ToInt32(e.CommandArgument));
                }

            }
            protected void cargarcontribucionespartida(int currentPage)
            {
                int pageSize = 30;
                int _TotalRowCount = 0;
                string _ConStr = ConfigurationManager.ConnectionStrings["Leidy"].ConnectionString;
                using (SqlConnection con = new SqlConnection(_ConStr))
                {
                    SqlCommand cmd = new SqlCommand("DatosContribucionesPartida", con);
                    cmd.CommandTimeout = 300;
                    cmd.CommandType = CommandType.StoredProcedure;
                    int startRowNumber = ((currentPage - 1) * pageSize) + 1;
                    cmd.Parameters.AddWithValue("@PatenteAduanal", DropDownList1.SelectedValue);
                    cmd.Parameters.AddWithValue("@ClaveSecAduanera", DropDownList2.SelectedValue);
                    cmd.Parameters.AddWithValue("@PageIndex", startRowNumber);
                    cmd.Parameters.AddWithValue("@PageSize", pageSize);
                    SqlParameter parTotalCount = new SqlParameter("@RecordCount", SqlDbType.Int);
                    parTotalCount.Direction = ParameterDirection.Output;
                    cmd.Parameters.Add(parTotalCount);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    _TotalRowCount = Convert.ToInt32(parTotalCount.Value);
                    GridView2.DataSource = ds;
                    GridView2.DataBind();
                    GenerarPaginas2(_TotalRowCount, pageSize, currentPage);
                }
            }
            public void GenerarPaginas2(int totalRowCount, int pageSize, int currentPage)
            {

                int totalLinkInPage = 10;
                int totalPageCount = (int)Math.Ceiling((decimal)totalRowCount / pageSize);
                int startPageLink = Math.Max(currentPage - (int)Math.Floor((decimal)totalLinkInPage / 2), 1);
                int lastPageLink = Math.Min(startPageLink + totalLinkInPage - 1, totalPageCount);
                if ((startPageLink + totalLinkInPage - 1) > totalPageCount)
                {
                    lastPageLink = Math.Min(currentPage + (int)Math.Floor((decimal)totalLinkInPage / 2), totalPageCount);
                    startPageLink = Math.Max(lastPageLink - totalLinkInPage + 1, 1);
                }
                List<ListItem> pageLinkContainer = new List<ListItem>();
                if (startPageLink != 1)
                    pageLinkContainer.Add(new ListItem("Primero", "1", currentPage != 1));
                for (int i = startPageLink; i <= lastPageLink; i++)
                {
                    pageLinkContainer.Add(new ListItem(i.ToString(), i.ToString(), currentPage != i));

                }

                if (lastPageLink != totalPageCount)
                    pageLinkContainer.Add(new ListItem("Ultimo", totalPageCount.ToString(), currentPage != totalPageCount));
                dlPager2.DataSource = pageLinkContainer;
                dlPager2.DataBind();
            }
            protected void dlPager_ItemCommand2(object source, DataListCommandEventArgs e)
            {
                if (e.CommandName == "PageNo")
                {
                    cargarcontribucionespartida(Convert.ToInt32(e.CommandArgument));
                }

            }




    jueves, 14 de enero de 2016 7:03

Respuestas

  • En el código que has puesto no se ve nada que exporte a Excel. Deberías mostrarnos la parte desde la que exportas, ya que ahí es donde hay que meter los mecanismos necesarios para que genere todas las páginas, y ahí es donde te debe de estar fallando algo puesto que solo te sale una página.
    jueves, 14 de enero de 2016 10:41