按列名显示/隐藏网格视图列
本文关键字:网格 视图 隐藏 显示 | 更新日期: 2023-09-27 18:20:24
我正在Visual Studio 2012中使用C#创建一个web项目,该项目从数据库中获取数据并显示在网格视图中。数据库中有很多列,它显示在网格视图中。我想为用户提供一个选项,使用复选框消除不需要的列,选中后,单击按钮,它必须更新。
我发现了如何按列名称隐藏列。我需要了解如何使用列名显示它。
if (CheckBox3.Checked)
{
dt.Columns.Remove("Site_name");
GridView1.DataSource = dt;
GridView1.DataBind();
}
else
{
dt.Columns.Show("Site_name"); //I want a code to display, using column name.
}
我发现了一种非常简单的方法,通过单击按钮上的复选框来显示和隐藏特定的列。
if (CheckBox3.Checked == false)
{
dt.Columns.Remove("Site_name");
GridView1.DataSource = dt;
GridView1.DataBind();
}
我不会从DataTable
中删除整个列,如果用户想显示它,就无法将其取回(而不从数据库或其他地方重新编码所有列)。我只显示/隐藏那个栏。
你必须先找到列的索引。CCD_ 2只支持按DataControlField
查找索引,不支持按其HeaderText
查找索引。如果您经常需要根据名称查找GridView
列的索引,则可以使用以下扩展方法:
public static class Extensions
{
public static int GetColumnIndex(this DataControlFieldCollection columns, string columnName, StringComparison comparison = StringComparison.CurrentCultureIgnoreCase)
{
for(int index = 0; index < columns.Count; index++)
if(columns[index].HeaderText.Equals(columnName, comparison))
return index;
return -1;
}
}
现在你可以使用这个代码:
int colIndex = GridView1.Columns.IndexOf("Site_name");
GridView1.Columns[colIndex].Visible = isColumnVisible; // acc. to your logic