2010-12-17 90 views
0

我绑定gridView到List<model>。我可以将它导出到excel文件,但我无法删除特定的列。任何想法如何做?我试过gridView.Columns.RemoveAt(myIndex),但没有工作,并抛出一个空的异常,我假设这是因为gridView没有绑定到dataTable。使用GridView删除列导出到Excel

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

gridView.DataBind(); 

回答

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); 
    } 
} 

然后导出数据集

+0

+1我会试试这个方法。 – odez213 2010-12-17 14:52:32

+0

感谢它的工作,虽然我希望有一个比做数据传输对象更好的方法。 – odez213 2010-12-18 08:57:44

+0

很高兴为你效劳 – 5N0U7 2010-12-21 21:24:01

0

两个建议:

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

模型对象非常静态。模型对象可能有地址属性,我不希望它显示在gridView中。我如何定义gridView中的列? – odez213 2010-12-17 14:52:05