2013-08-06 77 views
2

我有我使用SQL查询填充的DataTable。然后我填入GridViewDataTable如何隐藏数据表中的列

DataTable table = new DataTable(); 
table.Load(reader); 
gvAktivne.DataSource = table; 
gvAktivne.DataBind(); 

这工作正常,但现在我想隐藏第一列。当我加上这个:

gvAktivne.Columns[0].Visible = false; 

我得到IndexOutOfRange异常。 有没有人有一个想法如何解决这个问题?

+0

能否请您确认,如果您的数据源具有有效数据Rows.Count> 0 –

+0

从删除列DataTable实例绑定到GridView之前。 – erdinger

+0

在这里回答:http://stackoverflow.com/a/3819831/542398 – Chains

回答

1

根据问题陈述,看起来你有AutoGenerateColumns设置为true。当你想要隐藏列时,这会有问题。您需要确保您在DataBind()之后发出该行代码,并且我会在OnPreRender之后执行此操作。

protected override void OnPreRender(EventArgs e) 
{ 
    base.OnPreRender(e); 
    gvAktivne.Columns[0].Visible = false; 
} 
0

试试这个:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
     e.Row.Cells[0].Visible = false; 
} 
0

这可能会为你工作:

DataTable data; 
data.Columns[0].ColumnMapping = MappingType.Hidden;