Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示并选择gridview列_C#_Asp.net_Webforms_Aspxgridview - Fatal编程技术网

C# 显示并选择gridview列

C# 显示并选择gridview列,c#,asp.net,webforms,aspxgridview,C#,Asp.net,Webforms,Aspxgridview,我有一个字符串列表,试图用它来控制gridview中显示的列,但似乎不知道如何让它工作。下面是一个示例List selectedHeaders=newlist(新字符串[]{“header1”、“header2”、“header3”、“header4”}) 如何循环gridview列并将其与selectedHeaders中的值进行比较,以及如何将所有不匹配的列的可见性设置为false。还要注意,SelectedHeader的数量可能不同于gridview中的列总数 以下是我到目前为止的情况: f

我有一个字符串列表,试图用它来控制gridview中显示的列,但似乎不知道如何让它工作。下面是一个示例
List selectedHeaders=newlist(新字符串[]{“header1”、“header2”、“header3”、“header4”})

如何循环gridview列并将其与selectedHeaders中的值进行比较,以及如何将所有不匹配的列的可见性设置为false。还要注意,SelectedHeader的数量可能不同于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;
      }
   }
}
foreach(gvEmployees中的GridViewRow行)
{
对于(int i=0;i

我不知道如何折射它给了我一个索引超出范围的错误,因为gridview有6列,但selectedHeaders可能包含1-6个值。

您的循环对于您试图完成的任务没有意义

所做的工作:循环浏览GridView中的每一行,循环浏览其中的每一列,并在SelectedHeader中查找具有匹配索引的字符串

您需要做的是:循环遍历每一列,并检查selectedHeaders中是否有对应的记录(按值,而不是按索引位置)

将代码更改为:

for (int i = 0; i < gvEmployees.Columns.Count; i++)
{
    if (!selectedHeaders.Any(h => h == gvEmployees.Column[i].HeaderText))
    {
        gvEmployees.Column[i].Visible = false;
    }
}
for(int i=0;ih==gvEmployees.Column[i].HeaderText))
{
gvEmployees.Column[i].Visible=false;
}
}

感谢您的回复;但是,您编写的代码给了我以下错误“object”不包含“HeaderText”的定义,并且找不到可访问的扩展方法“HeaderText”接受类型为“object”的第一个参数(是否缺少using指令或程序集引用?@user721126我已更新代码。Web表单并不总是能很好地处理foreach循环,所以我将其切换为for循环。非常感谢您解释我做错了什么。这工作做得很好!