CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

datagrid导出数据到excel出错,大家帮忙分析一下

楼主woft()2005-02-28 11:01:17 在 .NET技术 / ASP.NET 提问

类型“DataGridLinkButton”的控件“dg__ctl2__ctl0”必须放在具有   runat=server   的窗体标记内。    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.Web.HttpException:   类型“DataGridLinkButton”的控件“dg__ctl2__ctl0”必须放在具有   runat=server   的窗体标记内。  
   
  源错误:    
   
   
  行   115: System.IO.StringWriter   oStringWriter   =   new   System.IO.StringWriter(myCItrad);    
  行   116: System.Web.UI.HtmlTextWriter   oHtmlTextWriter   =   new   System.Web.UI.HtmlTextWriter(oStringWriter);  
  行   117: this.dg.RenderControl(oHtmlTextWriter);    
  行   118: Response.Write(oStringWriter.ToString());  
  行   119:  
     
   
  源文件:   f:\973项目\login\1.aspx.cs         行:   117    
   
  1.aspx:  
   
  <%@   Page   language="c#"   Codebehind="1.aspx.cs"   AutoEventWireup="false"   Inherits="LogIn._1"   %>  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >  
  <HTML>  
  <body   leftmargin="0"   topmargin="0"   marginwidth="0"   marginheight="0">  
  <form   id="frm"   runat="server">  
  <FONT   face="宋体"></FONT><FONT   face="宋体"></FONT>  
  <BR>  
  <BR>  
  <asp:DataGrid   id="dg"   runat="server">  
  <Columns>  
  <asp:ButtonColumn   Text="Button"   CommandName="sa"></asp:ButtonColumn>  
  </Columns>  
  </asp:DataGrid>  
  <asp:Button   id="Button1"   runat="server"   Text="Button"></asp:Button>  
  </form>  
  </body>  
  </HTML>  
   
  1.aspx.cs:  
   
  using   System;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Data;  
  using   System.Drawing;  
  using   System.Web;  
  using   System.Web.SessionState;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
  using   System.Data.SqlClient;  
   
  namespace   LogIn  
  {  
  ///   <summary>  
  ///   Summary   description   for   _1.  
  ///   </summary>  
  public   class   _1   :   System.Web.UI.Page  
  {  
  protected   System.Web.UI.WebControls.DataGrid   dg;  
  protected   System.Web.UI.WebControls.Button   Button1;  
   
   
   
  #region   Web   Form   Designer   generated   code  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   This   call   is   required   by   the   ASP.NET   Web   Form   Designer.  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   Required   method   for   Designer   support   -   do   not   modify  
  ///   the   contents   of   this   method   with   the   code   editor.  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.Button1.Click   +=   new   System.EventHandler(this.Button1_Click);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
   
   
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)    
  {    
  if   (!IsPostBack)    
  {    
   
  SqlConnection   conn   =   new   SqlConnection   ("data   source=(local);initial   catalog=Northwind;Pwd=sa;User   ID=sa");    
  SqlCommand   cmd   =   new   SqlCommand   ("Select   LastName,   FirstName,   Title,   TitleOfCourtesy,   BirthDate,   HireDate,   Address,   City,   Region,   PostalCode,   Country   from   Employees",   conn);    
  SqlDataAdapter   da   =   new   SqlDataAdapter(cmd);    
  DataSet   ds   =   new   DataSet();    
  da.Fill(ds);    
  dg.DataSource   =   ds.Tables[0];    
  dg.DataBind();    
  }    
   
  }    
   
   
  private   void   Button1_Click(object   sender,   System.EventArgs   e)  
  {  
   
  Response.Clear();    
  Response.Buffer=   true;    
  Response.Charset="GB2312";          
  Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");    
  Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文  
  Response.ContentType   =   "application/ms-excel";//设置输出文件类型为excel文件。    
  this.EnableViewState   =   false;          
  System.Globalization.CultureInfo   myCItrad   =   new   System.Globalization.CultureInfo("ZH-CN",true);  
  System.IO.StringWriter   oStringWriter   =   new   System.IO.StringWriter(myCItrad);    
  System.Web.UI.HtmlTextWriter   oHtmlTextWriter   =   new   System.Web.UI.HtmlTextWriter(oStringWriter);  
  this.dg.RenderControl(oHtmlTextWriter);    
  Response.Write(oStringWriter.ToString());  
   
   
  }    
  }  
  }  
   
  我的控件都放在<form   runat=server>   </form>内了呀!  
  另外,我只要不在datagrid列中加asp:ButtonColumn   就没有问题,这怎么回事呢?  
  我现在问题是:  
  我的datagrid内本来就有asp:ButtonColumn   列  
  我怎样把其他列的数据导出到excel而不出错?多谢指教! 问题点数:100、回复次数:14Top

1 楼hedonister(冰戈)回复于 2005-02-28 11:10:51 得分 10

太多,没时间看,帮你顶Top

2 楼anycall2004(没事,瞎转悠!)回复于 2005-02-28 11:16:07 得分 10

另开个页面不分页   就可以了~~或者把sortFiled   都去掉   分页去掉可能可以。Top

3 楼showmetoyou(好的)回复于 2005-02-28 11:24:34 得分 10

你的代码没有问题,我也遇到过这个问题!分页的情况下是会出错的!  
  解决方法:用一个隐藏datagrid取得数据!通过它导出到excel!我想你明白了!Top

4 楼zipo(程序员)回复于 2005-02-28 11:24:56 得分 10

帮你顶  
  Top

5 楼Alexandria(灌技术的水)回复于 2005-02-28 11:27:15 得分 10

那就不要加asp:ButtonColumn,没看出它有什么作用Top

6 楼Night_Elf(风暴虫)回复于 2005-02-28 11:32:32 得分 10

加上Protected   oHtmlTextWriter   As   System.Web.UI.HtmlTextWriter   试试Top

7 楼onlytiancai(谁染枫林醉)回复于 2005-02-28 11:47:57 得分 10

没看懂这段代码的原理,偶对asp.net   page机理一知半解Top

8 楼huwei2003(凡)回复于 2005-02-28 11:48:07 得分 10

你看一下aspx的html,是不是<form   name='form1'   ranat=server>位置放得不对???Top

9 楼onlytiancai(谁染枫林醉)回复于 2005-02-28 11:49:44 得分 10

DataGrid的RenderControl()方法是做什么用的呀,你把dg的默认显示给替换了呀?你想让那个dg显示一段excel数据?Top

10 楼woft()回复于 2005-02-28 12:53:15 得分 0

to   anycall2004(╃小〥斌╄)   和     showmetoyou(好的)  
  datagrid本身的allowsorting   和   allowpaging属性就是false,默认的,我没改。  
   
  to   Alexandria(灌技术的水)  
  buttonColumn的功能是少不了的,因为还有其它需要。我只想导出datagrid中的数据列到excel  
   
  to   Night_Elf(风暴虫)  
  一样的错误,不是这里原因  
   
  to     huwei2003(凡)  
  我开始查了一下,论坛上有很多这样的错误,所以我特别看了的,一楼的代码上也写了,我看没问题  
   
  to     onlytiancai(谁染枫林醉)  
  这个函数的作用我不甚清楚,我本来是想把datagrid的数据导出到客户端excel中。参考孟子E章的方法写的。  
   
  我用的是最简单的一个例子试,但是不知道错误原因,谁愿意帮我试一个简单的例子,就是一个datagrid(里面至少有一列linkbutton),输出到excel?多谢  
   
  Top

11 楼yistudio(阳光灿烂的日子)回复于 2005-02-28 13:00:21 得分 4

要从datagrid中将数据导出来,象什么分页、按钮列、超链接列等等都不能要,或者用csv格式文件Top

12 楼beyondjay(初学者)回复于 2005-02-28 13:28:17 得分 4

哈哈哈哈哈哈,我来回答吧,我遇到过。  
  因为你的grid有分页!  
  把他重新绑定但是不要分页,然后导出excel,然后再绑定分页的显示给用户就可以了。分拿来。Top

13 楼lampson123(微软)回复于 2005-02-28 13:39:23 得分 2

好,又学了一招,呵呵,多谢Top

14 楼woft()回复于 2005-03-02 12:08:14 得分 0

to     beyondjay  
  我的datagrid没有分页!!!没人能解答了吗?Top

相关问题

  • datagrid导出到excel?
  • datagrid 导出到 excel
  • Datagrid导出到Excel
  • 导出EXCEL文件出错,请指教!
  • 第二次导出到EXCEL时出错!!!
  • 导出EXCEL时,遇到DataGrid包含有Checkbox时会出错,该怎么办呢?(没有Checkbox就不会)
  • Datagrid导出Excel 的问题
  • DataGrid导出Excel的问题
  • DataGrid导出Excel出问题
  • 水晶报表中,导出到Excel出错,请帮忙解决。

关键词

  • asp.net
  • ostringwriter
  • ctl
  • 错误
  • dg

得分解答快速导航

  • 帖主:woft
  • hedonister
  • anycall2004
  • showmetoyou
  • zipo
  • Alexandria
  • Night_Elf
  • onlytiancai
  • huwei2003
  • onlytiancai
  • yistudio
  • beyondjay
  • lampson123

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo