Я думаю, вы пытаетесь скрыть столбец на основе заголовка столбца, поэтому, пожалуйста, попробуйте следующий код,
// Code snippet to hide columns from a gridview named 'gvEmployees'
gvEmployees.DataSource = dvItems.ToTable();
gvEmployees.DataBind();
string name = "First Name";// Column name supposed to hide
foreach (var col in gvEmployees.Columns)
{
if (col.Text.ToLower().Trim() == name.ToLower().Trim())
{
// hiding the column from the grid view.
col.Visible = false;
}
}
Обновление
Вы также можете написать следующий код:
string name = "First Name";// Column name supposed to hide
for (int i = 0; i < gvEmployees.Columns.Count; i++)
{
if (gvEmployees.Columns[i].Text.ToLower().Trim() == name.ToLower().Trim())
{
gvEmployees.Columns[i].Visible = false;
}
}
Обновление при использовании автоматически генерируемых столбцов (для версии с одним столбцом),
Необходимо использовать событие привязки строки к строке и скрыть ячейку (столбец), когда строка связана.
int index = 0;
bool hidden = false;
protected void gvEmployees_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if(hidden)
{
e.Row.Cells[index].Visible = false;
return;
}
string name = "First Name";// Column name supposed to hide
for (int i = 0; i < e.Row.Cells.Count; i++)
{
if (e.Row.Cells[i].Text.ToLower().Trim() == name.ToLower().Trim())
{
e.Row.Cells[i].Visible = false;
hidden = true;
index = i;
break;
}
}
}
Обновление при использовании автоматически сгенерированных столбцов (для многоколоночной версии)
Использование события привязки строки к строке и скрытие ячейки (столбца), когда строка связана.
List<int> indexes = new List<int>();
bool hidden = false;
List<string> names = new List<string>();
protected void gvEmployees_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if(hidden)
{
foreach(int index in indexes)
{
e.Row.Cells[index].Visible = false;
}
}
// start - Column names supposed to hide
// Building the list of column names to be hidden.
names.Add("First Name");
names.Add("Last Name");
names.Add("Address");
names.Add("ID");
// end - Column names supposed to hide
for (int i = 0; i < e.Row.Cells.Count; i++)
{
if (names.Contains(e.Row.Cells[i].Text.ToLower().Trim())
{
e.Row.Cells[i].Visible = false;
hidden = true;
indexes.Add(i);
}
}
}