Gridview控件隐藏列,在excel中导出时只显示表头,没内容

hedy_lu 2011-05-27 01:55:07
下面贴源码:
GridView1.AllowPaging = false;
GridView1.AllowSorting = false;
// GridView1.BottomPagerRow.Visible = false;
this.GridView1.Columns[11].Visible = true;

this.GridView1.Columns[12].Visible = true;
this.GridView1.Columns[13].Visible = true;
this.GridView1.Columns[14].Visible = true;
this.GridView1.Columns[15].Visible = true;
//this.GridView1.Columns[16].Visible = true;

System.Web.HttpContext HC = System.Web.HttpContext.Current;
HC.Response.Clear();
HC.Response.Charset = "GB2312";
HC.Response.Buffer = true;

Columns[11] 在页面上是隐藏的,但是在导出代码中设置的是显示,为什么只显示表头,不显示内容呢?
...全文
323 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ying25135 2011-12-18
  • 打赏
  • 举报
回复
楼主,你这个问题怎么解决的?我也碰到了同样的问题,请教下。
fa159004287 2011-06-07
  • 打赏
  • 举报
回复
先绑定数据,在隐藏你要隐藏的列!
子夜__ 2011-05-30
  • 打赏
  • 举报
回复
/// 将Web控件导出
/// </summary>
/// <param name="source">控件实例</param>
/// <param name="type">类型:Excel或Word</param>
public void ExpertControl(System.Web.UI.Control source, DocumentType type)
{
//设置Http的头信息,编码格式
if (type == DocumentType.Excel)
{
//Excel
Response.AppendHeader("Content-Disposition","attachment;filename=result.xls");
Response.ContentType = "application/ms-excel";
}
else if (type == DocumentType.Word)
{
//Word
Response.AppendHeader("Content-Disposition","attachment;filename=result.doc");
Response.ContentType = "application/ms-word";
}
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;

//关闭控件的视图状态
source.Page.EnableViewState =false;

//初始化HtmlWriter
System.IO.StringWriter writer = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
source.RenderControl(htmlWriter);

//输出
Response.Write(writer.ToString());
Response.End();
}

//文档类型
public enum DocumentType
{
Word,
Excel
}
至尊贱客 2011-05-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ly_lsz 的回复:]
可能是你在绑定数据之前就给这个列隐藏了,所以这个列没有值:


C# code
this.GridView1.Columns[11].Visible = false;
GridView1.DataSource = dt;
GridView1.DataBind();

你需要先将该列显示出来再绑定,然后再隐藏该列

C# code
this.GridView1.Columns[……
[/Quote]

++
ly_lsz 2011-05-27
  • 打赏
  • 举报
回复
可能是你在绑定数据之前就给这个列隐藏了,所以这个列没有值:

this.GridView1.Columns[11].Visible = false;
GridView1.DataSource = dt;
GridView1.DataBind();

你需要先将该列显示出来再绑定,然后再隐藏该列
this.GridView1.Columns[11].Visible = true;
GridView1.DataSource = dt;
GridView1.DataBind();
this.GridView1.Columns[11].Visible = false;

这样这个列就有值了。

hedy_lu 2011-05-27
  • 打赏
  • 举报
回复
我那Gridview 是绑定到数据库的临时表上的,所以就不知道怎么会出现这个问题,若是绑定直接数据源就没问题,不知道是什么情况




[Quote=引用 2 楼 ivenlove 的回复:]

不可能吧!!! 确定那列有内容?我也是一样的写法,完全没问题。
[/Quote]
ivenlove 2011-05-27
  • 打赏
  • 举报
回复
不可能吧!!! 确定那列有内容?我也是一样的写法,完全没问题。
hedy_lu 2011-05-27
  • 打赏
  • 举报
回复
怎么没人呢?

62,243

社区成员

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

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

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

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