C# 显示并选择gridview列
我有一个字符串列表,试图用它来控制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
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循环。非常感谢您解释我做错了什么。这工作做得很好!