显示 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;
    }
}