0

我在这里GridView用来显示数据。为了将数据导出Gridview为 excel 格式,我使用了一个按钮 - "Download into Excel"。下载到 Excel 格式或导出到 Excel 工作正常。即GridView显示总共 9 列。

我的问题是我想在 Excel 表中显示 7 列(根据我们的选择)。显示的GridView内容应保持不变,但 Excel 将仅显示我们想要的那些列。

我已经使用过GridView1.Columns.RemoveAt(2); 但这会随机删除更多数量的列。

4

4 回答 4

3

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

于 2012-10-25T19:52:23.457 回答
2

使用 RemoveAt 函数后,您需要对 gridview 进行数据绑定:

GridView1.Columns.RemoveAt(0);
GridView1.DataBind();
于 2013-04-18T21:51:35.827 回答
1

RemoveAt() 不起作用

尝试这样的事情

int i;
for (i = 0; i < GV.Columns.Count; i++)
{
     if (GV.Columns[i].HeaderText == "Title")
     {
          GV.Columns[i].Visible = false;
          break;
     }
}


GV.RenderControl(htmltextwrtter);
Response.Write(strwritter.ToString());
Response.Flush();
Response.End();
GV.Columns[i].Visible = true;
于 2019-01-16T04:18:51.910 回答
0
GridView1.Columns(0).Visible = False

将 0 替换为您要删除的列(它从 0、1、2~ 开始计数),它适用于我的 gridview excel 报告。

于 2018-11-30T07:46:39.473 回答