问题背景
    在BS项目中,把分页的gridview的数据(不只是导出当前页的数据),全部导出为Excel文件(这里特指绘制页面的方式),碰到三个问题;
问题1,身份证编号数字不能正常显示(后面几位变成0并且会显示成科学计算符)
问题2,虽然,我在demo中,直接把gridview的数据绘制出来,结果页面上的所有控件都绘制出来了

解决问题
  第一个问题很好解决,google了下,发现将 GridView 导出Excel 时,身份证号码被改为科学计数法显示,所有,我们只要改变一下身份证编号的数据类型就可以了
比如改成字符类。
  我们在导出的时候把类型改掉

关于VerifyRenderingInServerForm方法的思考// 注意gridView.Rows[count].Cells[3]
关于VerifyRenderingInServerForm方法的思考
             for  ( int  count  =   0 ; count  <  gridView.Rows.Count; count ++ )
            }

这里,我把数字类型改成了字符类型,而且在身份证编号前加了个“'”号,这样就解决了数字过长,尾数都变成0的问题,而且也解决了身份证号码被改为科学计数法显示的问题。

  至于第二个问题,比较麻烦,我跟踪了好几次,都没有发现原因,先来看完整的demo


  这个问题,很好解决,重写VerifyRenderingInServerForm方法,什么事也不干(也就是阻止系统调用默认的VerifyRenderingInServerForm方法)
public   override   void  VerifyRenderingInServerForm(System.Web.UI.Control control)
    {
        
        
// base.VerifyRenderingInServerForm(control);
        
        
    }


总结
  问题的关键是导出excel的时候,输出文件已经不是合法的aspx文件,我们唯一的办法,就是阻止系统掉用控件的检查方法,防止抛出异常,导致系统调用默认的输出方法,从而导致整个页面的控件都被导出。

 

 

本文转至 

http://blog.csdn.net/JeromeLvye/archive/2010/01/24/5250701.aspx
本文代码我没有测试过,不过我很赞同作者的想法与思维方式

相关文章:

  • 2021-08-04
  • 2021-06-30
  • 2021-12-10
  • 2021-12-02
  • 2021-05-07
  • 2021-08-08
  • 2021-05-21
  • 2021-11-13
猜你喜欢
  • 2022-01-17
  • 2021-08-18
  • 2022-02-07
  • 2021-06-30
  • 2022-01-19
  • 2021-12-03
相关资源
相似解决方案