显示 select gridview 列
Show select gridview columns
我有一个字符串列表,我试图用它来控制 gridview 中显示的列,但似乎无法弄清楚如何让它工作。这是一个例子 List<string> selectedHeaders = new List<string>(new string[] { "header1", "header2", "header3", "header4" });
我如何遍历 gridview 列并将它们与 selectedHeaders 中的值进行比较,并将所有不匹配的列的可见性设置为 false。另请注意,selectedHeaders 的数量可能与 gridview 中的总列数不同。
这是我目前的情况:
foreach (GridViewRow row in gvEmployees)
{
for (int i = 0; i < gvEmployees.Columns.Count; i++)
{
if (gvEmployees.Column[i].HeaderText != selectedHeaders[i])
{
gvEmployees.Column[i].Visible = false;
}
}
}
我不确定如何折射它给我一个索引超出范围的错误,因为 gridview 有 6 列,但 selectedHeaders 可以包含 1-6 个值。
你的循环对你想要完成的事情没有意义。
您在做什么:循环遍历 GridView 中的每一行,循环遍历其中的每一列,并在您的 selectedHeaders 中查找具有匹配索引的字符串
您需要做的是:遍历每一列,并按值而不是索引位置检查 selectedHeaders 中是否有对应的记录。
将您的代码更改为:
for (int i = 0; i < gvEmployees.Columns.Count; i++)
{
if (!selectedHeaders.Any(h => h == gvEmployees.Column[i].HeaderText))
{
gvEmployees.Column[i].Visible = false;
}
}
我有一个字符串列表,我试图用它来控制 gridview 中显示的列,但似乎无法弄清楚如何让它工作。这是一个例子 List<string> selectedHeaders = new List<string>(new string[] { "header1", "header2", "header3", "header4" });
我如何遍历 gridview 列并将它们与 selectedHeaders 中的值进行比较,并将所有不匹配的列的可见性设置为 false。另请注意,selectedHeaders 的数量可能与 gridview 中的总列数不同。
这是我目前的情况:
foreach (GridViewRow row in gvEmployees)
{
for (int i = 0; i < gvEmployees.Columns.Count; i++)
{
if (gvEmployees.Column[i].HeaderText != selectedHeaders[i])
{
gvEmployees.Column[i].Visible = false;
}
}
}
我不确定如何折射它给我一个索引超出范围的错误,因为 gridview 有 6 列,但 selectedHeaders 可以包含 1-6 个值。
你的循环对你想要完成的事情没有意义。
您在做什么:循环遍历 GridView 中的每一行,循环遍历其中的每一列,并在您的 selectedHeaders 中查找具有匹配索引的字符串
您需要做的是:遍历每一列,并按值而不是索引位置检查 selectedHeaders 中是否有对应的记录。
将您的代码更改为:
for (int i = 0; i < gvEmployees.Columns.Count; i++)
{
if (!selectedHeaders.Any(h => h == gvEmployees.Column[i].HeaderText))
{
gvEmployees.Column[i].Visible = false;
}
}