.Net 4.0;VS2012
在我的类似案例中——大致是 Kedar 所描述的,包括按钮和看到 100% 的网格导出——我得出的结论是,尝试让 RemoveAt(index) 完成其从我正在导出的网格视图。我不知道为什么它没有,但是在 RemoveAt 之后我的 gridview 总是没有改变。
我在一个板上看到了一个类似的问题,其中接受的答案 - 对于想要导出到 Excel 的海报,再次想要在导出时隐藏指定的列 - 只是让他不需要的列不可见。受访者虽然乐于提供帮助,但没有抓住重点:目标是让有问题的列不出现在 EXPORT 上 - 不仅仅是从屏幕显示中消失,隐藏列很简单(设置 Visible=false)。
就我而言,我试图丢失gridview上的列,当它被发送到Excel时,没有重新绑定并且没有引入动态的sql。我认为这可能是一个失败的原因,因为我只是没有看到 RemoveAt(index) 工作,即使没有导致错误。我很困惑我可能会做什么,这会导致 gridview.Columns.RemoveAt(index) 非常可靠地无法执行其功能:所有列在我完成后仍然存在。
在以下代码中,我的目标已简化为尝试删除单个列,以验证 RemoveAt(index) 是否会执行任何操作。
GridView gProgramProposalRequests 出现在 UI 中。
我正在制作它的副本,gridForExport,因为我想删除列,然后将 gridForExport 传递给导出方法。“标题”是我的网格中的列之一,用作此运行中的示例列。
GridView gridForExport = (GridView)gProgramProposalRequests;
gridForExport.AutoGenerateColumns = false;
for (int i = 0; i < gridForExport.Columns.Count; i++)
{
if (gridForExport.Columns[i].HeaderText == "Title")
gridForExport.Columns.RemoveAt(i);
}
在循环之后,“标题”仍然存在。我以为我已经告诉应用程序删除名为 Title 的列。我观察执行光标执行 RemoveAt 行。我指定哪一列并不重要——在这个循环执行之后,我仍然可以找到我命名的那一列。
跟进 - 我尝试从 GridView 的集合中删除列没有成功。现在我有点喜欢我从将 CSV 内容写入响应中得到的结果,而不是阻止添加我指定的列。但我必须弄清楚如何处理内容字段中的逗号。感谢http://wiki.asp.net/page.aspx/401/export-to-csv-file/