zoukankan      html  css  js  c++  java
  • 原样导出Repeater控件数据(包括分页数据)

    一、背景说明

    之前导出excel一般使用DataTable作为数据库,但是DataTableRepeater绑定后,会做一些格式转换(如:dt里面为1的值 Repeater中显示 “正常”),如果在DataTable中再进行转换就比较麻烦。(好处就是可以导出分页数据)

    二、解决方法

    1、解决的问题
           a) Repeater数据原样导出

           b) 可导出Repeater中的分页数据

    2、代码

                DataTable dt = ViewState["DtDatat"as DataTable;

                this.Repeater1.DataSource = dt;

                this.Repeater1.DataBind();

                //使用流方式导出Excel

                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

                HttpContext.Current.Response.ContentType = "application/ms-excel";

                HttpContext.Current.Response.Charset = "gb2312";

                HttpContext.Current.Response.AppendHeader("Content-Disposition""attachment;filename=" + HttpUtility.UrlEncode("门店奖品兑换.xls"System.Text.Encoding.UTF8).ToString());

                StringWriter sw = new StringWriter();

                HtmlTextWriter htw = new HtmlTextWriter(sw);

                Repeater1.RenderControl(htw);

                HttpContext.Current.Response.Write(sw.ToString());

                HttpContext.Current.Response.End();

     三 、代码说明

    1、如果要导出分页数据,那么就需要把Repeater绑定的DataTable数据存放在ViewState中,触发导出事件时使用DataTable重新绑定Repeater
    DataTable dt = ViewState["DtDatat"as DataTable;

                this.Repeater1.DataSource = dt;

                this.Repeater1.DataBind();

    2、使用流方式导出

     四、会出现问题的解决方法

         1、导出的Excel都是Html代码

            所有的html代码应该放在Repeater内,包括<table>

         2、导出的所有数据缩到一列

            在标题列中不要通过style=10% 设置宽度 

  • 相关阅读:
    轻量级前端MVVM框架avalon
    Android开发:TextView添加超链接的简便方法
    那些年一起学过的面向对象之:4 面向对象的三大特征:封装、继承、多态
    iOS 如何创建单例对象
    phing用户手册第四章Getting Started译文
    C语言中scanf/fscanf 的%[]和%n说明符的使用方法
    listview改变选中行字体颜色
    oracle数据库单个数据文件的大小限制
    古堡算式
    java反射--注解的定义与运用以及权限拦截
  • 原文地址:https://www.cnblogs.com/gossip/p/1978072.html
Copyright © 2011-2022 走看看