谢谢大家 ,请问这个问题怎么解决?初学者问题。

梦回童年001 2006-03-26 01:36:07
我在CSDN里找了一段代码,用来从DataGrid里导出数据到Excel里。
可是点导出的时候,出现这个问题。

类型“DataGridLinkButton”的控件“DataGrid1_ctl02_ctl00”必须放在具有 runat=server 的窗体标记内。

代码如果。
protected void Button2_Click(object sender, EventArgs e)
{
if (TextBox1.Text == "")
{
Response.Write("<script language=javascript>");
Response.Write("window.alert(\"请输入文件名\")");
Response.Write("</script>");
}
else
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "gb2312";//设置了类型为中文防止乱码的出现
Response.AppendHeader("Content-Disposition", "attachment;filename=" + TextBox1.Text + ".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.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
}

}

问题这个问题怎么解决?
类型“DataGridLinkButton”的控件“DataGrid1_ctl02_ctl00”必须放在具有 runat=server 的窗体标记内。


我的是vs2005

谢谢大家
...全文
240 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveCherry 2006-03-28
  • 打赏
  • 举报
回复
也可以自己另外建立一个纯数据的datagrid(隐藏)专门来导出,或者打开新窗口导出后关闭
pxx_pxx 2006-03-28
  • 打赏
  • 举报
回复
把HTML页面里相关字段的排序去掉
marco08 2006-03-27
  • 打赏
  • 举报
回复
页面上所有的服务器控件都必须放在<form id="Form1" method="post" runat="server">...</form>里面
cat_hsfz 2006-03-26
  • 打赏
  • 举报
回复
某些控件是必须放在form内的,而你输出到excel的代码又会把form去掉,这就矛盾了。

DataGridLinkButton应该是DataGrid某个内置的LinkButton继承类吧,你试一下把DataGrid多余的功能都关掉就输出<table>行不行,不行的话就只能手动输出<table>了(例如用Repeater)。
wfz131 2006-03-26
  • 打赏
  • 举报
回复
可能有重复的<form>,而DataGridLinkButton在没有<runat=server>的from中
haolegend 2006-03-26
  • 打赏
  • 举报
回复
添加runat="server"
浩方软件HFWMS 2006-03-26
  • 打赏
  • 举报
回复
重画DataGrid应该就OK
梦回童年001 2006-03-26
  • 打赏
  • 举报
回复
只得一对Form 标签
<form id="form1" runat="server">

vivianfdlpw 2006-03-26
  • 打赏
  • 举报
回复
导出时把含有DataGridLinkButton的列的Visible属性设置为false,导出后再改回来
quou2002 2006-03-26
  • 打赏
  • 举报
回复
导出程序没有问题(已测试),你说的问题产生的原因:你肯定在DataGrid里开启了排序或分页功能,这样DataGrid会自动加入linkButton,而使用上述导出excel的方法DataGrid里不能有这样的。目前我能够想到的是,另外建一个隐藏的DataGrid存放排序或分页后的数据(里面避免使用linkButton),导出时使用这个隐藏的DataGrid导出。
至于有没有其他的更好的方法,可以从根本上解决此问题,有待进一步研究。
ljhkim6 2006-03-26
  • 打赏
  • 举报
回复
出现这个的原因可能是你的HTML页面里包含了多个FROM标签,把他去掉就可以了。
kension 2006-03-26
  • 打赏
  • 举报
回复
看看你的页面HTML代码是不是有有这样一句话
<body>
<form id="Form1" runat="server" meoth="Post">
</form></body>
panzi667 2006-03-26
  • 打赏
  • 举报
回复
也想知道

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧