我有一个datagridview,它通过一个strored过程加载。它有一个ID列,我想隐藏它但仍然访问它的值。我设置了dataKeyNames,我有一个方法
protected void grdTime_OnDataBound(object sender,EventArgs e)
{
grdTime.Columns[1].Visible = false;
}
我试图隐藏此列,但我收到以下错误。如果我删除方法内部的行,它的工作原理。这是错误。 指数超出范围。必须是非负数且小于集合的大小。 参数名称:index
答案 0 :(得分:0)
在方法中尝试此代码,然后检查..
grdTime.Columns [0] .Visible = false;
答案 1 :(得分:0)
隐藏Row_Created事件中的列
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[1].CssClass = "hiddencol";
//e.Row.Cells[2].CssClass = "hiddencol";
}
else if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[1].CssClass = "hiddencol";
//e.Row.Cells[2].CssClass = "hiddencol";
}
}
此处hiddencol
是一个css类
.hiddencol
{
display:none;
}
在上面的代码中我隐藏了我网格的第二列
答案 2 :(得分:0)
如果您已将GridView的AutoGenerateColumns
设置为true
(默认值),则Columns-Collection为空。以下应该工作:
1)
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Visible = false;
}
2)。
foreach (TableRow row in GridView1.Controls[0].Controls)
{
row.Cells[0].Visible = false;
}
答案 3 :(得分:0)
你可以在.aspx页面上的gridview标签中使用这样的东西
<Columns>
<asp:BoundField HeaderText="Merchandise Id" DataField="MerchandiseId" Visible="false" /></columns>