使用GridView删除列以导出到Excel

时间:2010-12-17 13:43:16

标签: c# asp.net asp.net-mvc

我将gridView绑定到List<model>。我能够将其导出到excel文件,但我无法删除特定的列。关于怎么做的任何想法?我尝试gridView.Columns.RemoveAt(myIndex)但没有工作并抛出一个null异常,我假设这是因为gridView没有绑定到dataTable。

var models = new ModelService().List(startDate, DateTime.Now);
var gridView = new GridView { DataSource = models };                       

gridView.DataBind();

2 个答案:

答案 0 :(得分:1)

转换为数据集或数据表

foreach (GridViewRow dr in gridView.Rows)
{
  //Create dataset and insert into cell value.
  dr.Cells[0].Text;
  dr.Cells[1].Text;
}

删除所需的行

for (int j = ds.Tables[0].Rows.Count - 1; j >= 0; j--)
{
  if (ds.Tables[0].Rows[j][column].ToString() == criteria)
  {
    ds.Tables[0].Rows.RemoveAt(j);
  }
}

然后导出数据集

答案 1 :(得分:0)

两个建议:

  1. 使用LINQ从ModelService中仅选择所需的列,以便您不希望的列永远不会进入网格。
  2. 在GridView中定义列并隐藏导出到Excel时不需要的列。无论如何我这样做是因为我想要更多地控制列的格式化。