C# 设置数据源时如何在gridview中隐藏列
我有以下代码来隐藏列和编辑列标题。但它不会进入foreach。我尝试了各种方法,将foreach放入DataBound、RowDataBound和RowCreated事件中。但不起作用C# 设置数据源时如何在gridview中隐藏列,c#,asp.net,gridview,C#,Asp.net,Gridview,我有以下代码来隐藏列和编辑列标题。但它不会进入foreach。我尝试了各种方法,将foreach放入DataBound、RowDataBound和RowCreated事件中。但不起作用 GridView1.AutoGenerateColumns = true; GridView1.DataSource = SomeObject[]; GridView1.DataBind(); foreach (DataControlField col in GridView1.Columns) { i
GridView1.AutoGenerateColumns = true;
GridView1.DataSource = SomeObject[];
GridView1.DataBind();
foreach (DataControlField col in GridView1.Columns)
{
if (col.HeaderText == "FirstName")
{
col.HeaderText = "First Name";
}
if (col.HeaderText == "SchoolName")
{
col.Visible = false;
}
}
谁能告诉我修理方法吗。谢谢请注意,如果执行
autoGenerateColumns=true
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[index].Visible = false;
}
使用GridView的RowDataBound事件将列设置为不可见
在aspx页面上,您可以像这样在gridview控件中声明
<asp:GridView runat="server" OnRowDataBound="GridView_RowDataBound" .../>
试试这个:
int indexOfSchoolName = -1;
int columnIndex = -1;
foreach(TableCell cell in GridView1.HeaderRow.Cells)
{
columnIndex ++;
if (cell.Text == "FirstName")
{
cell.Text = "First Name";
}
if(cell.Text == "SchoolName") indexOfSchoolName = columnIndex;
}
if(indexOfSchoolName != -1)
{
foreach(GridViewRow row in GridView1.Rows)
{
row.Cells[indexOfSchoolName].Visible = false;
}
}
为什么不从SomeObject[]中删除列或克隆它,然后删除列?如果
SomeObject[]
是一个数组,那么您可能需要尝试复制SomeObject[]
以表示CopyObject[]
,并操作此数组以排除所需的列。最后将其重新绑定到网格视图。我通常会这样做:
private int GetColumnIndexByName(GridView grid, string name)
{
foreach (DataControlField col in grid.Columns)
{
if (col.HeaderText.ToLower().Trim() == name.ToLower().Trim())
{
return grid.Columns.IndexOf(col);
}
}
return -1;
}
GridView1.Columns[GetColumnIndexByName(GridView1, "SchoolName")].Visible = false;
这有用吗?不,不想使用硬编码索引。因为我想让它成为未来的证明。如果索引发生变化,则会中断。如果您采用该解决方案并添加该解决方案,如何?不希望在这一点上失去值,@Dusht解决方案似乎是最好的。它使用正确的方法和干净的代码。与我的代码有什么区别?grid.Columns在此没有任何内容。正如@Dusht所指出的,在数据源就位后,您需要将AutoGenerateColumns=true移动到。谢谢Tim,cell.Text在调试时是空字符串