datagrid导出到excel数据显示不全 求方案 导出的excel文件只显示页眉和页脚 中间的数据没了 导出word能显示全部 在windows xp(sp2)和windows2000 excel2003 上都这样现象:行号2-42内容没了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static void ExportDataGrid(DataGrid dataGrid ,string fileName,string applicationType) { dataGrid.Visible=true; if(dataGrid.Page != null) { dataGrid.Page.EnableViewState = false; } System.Web.HttpContext.Current.Response.Clear(); System.Web.HttpContext.Current.Response.Buffer= true; System.Web.HttpContext.Current.Response.Charset="GB2312"; System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+fileName); System.Web.HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); System.Web.HttpContext.Current.Response.ContentType = applicationType; System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); DataExport.ClearControls(dataGrid); dataGrid.RenderControl(oHtmlTextWriter); System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString()); System.Web.HttpContext.Current.Response.End(); }跟孟子e章上差不多 做了少少改动 导出的按钮ExportDataGrid(datagrid,string.Format("{0}{1}.xls",DateTime.Now.Date.ToString("yyyyMMdd"),new Random().Next(100)),"application/ms-excel"); 光看这也不行啊,楼主,具体代码在ExportDataGrid这个方法里,把这个方法帖出来吧。有可能是DataGrid有其他Web控件,没办法RenderControl的原因。 赫赫,你代码就在上面,8好意思哦,错过了。DataExport.ClearControls(dataGrid); 这里代码什么意思?ClearControls... ClearControls也上在 孟子e章 上的一个拷贝功能是清除tablecell里一些的"没什么用的"控件 并把某些控件转用LiteralControl代替private static void ClearControls(Control control) { for (int i=control.Controls.Count -1; i>=0; i--) { ClearControls(control.Controls[i]); } if (!(control is TableCell)) { if (control.GetType().GetProperty("SelectedItem") != null) { LiteralControl literal = new LiteralControl(); control.Parent.Controls.Add(literal); try { literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control,null); } catch { } control.Parent.Controls.Remove(control); } else if (control.GetType().GetProperty("Text") != null) { LiteralControl literal = new LiteralControl(); control.Parent.Controls.Add(literal); literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null); control.Parent.Controls.Remove(control); } } return; } 本来datagrid有分页和排序的 我去之后再导出导出word没问题 导出到excel的话datagrid.items里的内容缺失把ClearControls()去掉之后 再试还是一样~ Help me 本人想写个MP3播放器 请问这个的结果是多少,为什么???? 层的隐藏问题求助 100分求解:添加新項裡沒有 activereport file (菜鸟提问)about Textbox 想做一个程序在管理端可以很直观统计主机的cpu、主板等信息 快速监视时,如何直接看到一个变量的所有属性 焦點移出TEXTBOX時﹐觸發事件 关于使用外部摄像头C++dll回调函数的问题 一定给分。初学者的问题,请问那里有C#的编译器下载呀,还有windows2000 sp1或者更高的版本。 关于正则表达示的问题.谢谢 有高手可以讲一讲吗?有谁做过吗??
{
dataGrid.Visible=true;
if(dataGrid.Page != null)
{
dataGrid.Page.EnableViewState = false;
}
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Buffer= true;
System.Web.HttpContext.Current.Response.Charset="GB2312";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+fileName);
System.Web.HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
System.Web.HttpContext.Current.Response.ContentType = applicationType;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
DataExport.ClearControls(dataGrid);
dataGrid.RenderControl(oHtmlTextWriter);
System.Web.HttpContext.Current.Response.Write(oStringWriter.ToString());
System.Web.HttpContext.Current.Response.End();
}跟孟子e章上差不多 做了少少改动
功能是清除tablecell里一些的"没什么用的"控件 并把某些控件转用LiteralControl代替
private static void ClearControls(Control control)
{
for (int i=control.Controls.Count -1; i>=0; i--)
{
ClearControls(control.Controls[i]);
} if (!(control is TableCell))
{
if (control.GetType().GetProperty("SelectedItem") != null)
{
LiteralControl literal = new LiteralControl();
control.Parent.Controls.Add(literal);
try
{
literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control,null);
}
catch
{
} control.Parent.Controls.Remove(control);
}
else if (control.GetType().GetProperty("Text") != null)
{
LiteralControl literal = new LiteralControl();
control.Parent.Controls.Add(literal);
literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
control.Parent.Controls.Remove(control);
}
}
return;
}
把ClearControls()去掉之后 再试还是一样~