.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/