微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

显示选择的 gridview 列

如何解决显示选择的 gridview 列

我有一个字符串列表,我试图用它来控制 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;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。