如何使用linq对象在asp.net页面中隐藏或显示某些控件

如何使用linq对象在asp.net页面中隐藏或显示某些控件,.net,asp.net,linq,controls,linq-to-objects,.net,Asp.net,Linq,Controls,Linq To Objects,我正在创建一个函数来隐藏所有gridview控件,除了在函数中传递名称的控件 此处this.Controls指页面中存在的控件(尽管在编译时抛出错误)。我想获取GridView类型的所有控件,其Name属性不等于函数中传递的控件 现在,在获得GridView的集合之后。我想隐藏所有的网格 private void HideGridView(string gridToShow) { GridView[] result = from control in this.Controls

我正在创建一个函数来隐藏所有gridview控件,除了在函数中传递名称的控件

此处
this.Controls
指页面中存在的控件(尽管在编译时抛出错误)。我想获取GridView类型的所有控件,其Name属性不等于函数中传递的控件

现在,在获得GridView的集合之后。我想隐藏所有的网格

private void HideGridView(string gridToShow)
{
    GridView[] result = from control in this.Controls
                 where control.GetType() == typeof(GridView) && control.Name !=gridToShow
                 select control as GridView;

    foreach (var control in result)
        control.Visible = false;
}
在comile time时,它将此控件显示为无效,因为它不是集合

How can I achieve this on a web application
编辑:

private void HideGridView(string gridToShow)
{
    (from control in this.Controls.OfType<GridView>
     where control.Name !=gridToShow
     select control).ToList().ForEach(gv=>gv.Visible=false);
}
private void HideGridView(字符串gridToShow)
{
(来自this.Controls.OfType中的控件)
where control.Name!=gridToShow
选择control).ToList().ForEach(gv=>gv.Visible=false);
}
下面是我编写的代码,向我显示了一个错误:
GridView
是一种类型,但像变量一样使用(编译时错误)。
where
中,无效的表达式术语“where”

该方法存在于何处?它是在你的网页上,还是在一个单独的图书馆里。如果它是页面派生类的成员,那么它应该可以正常工作。如果将其放在单独的库中,则需要将页面传入:

private void HideGridView(Page page, string gridToShow) 
{ 
    (from control in page.Controls.OfType<GridView>()
     where control.Name !=gridToShow 
      select control).ToList().ForEach(gv=>gv.Visible = false);
 }
您还可以将其作为扩展方法:

static class MyExtensions
{
  public static void HideGridView(this Page page, string gridToShow) 
  { 
       /// same as above.
  }
}
public static void ShowGridView(this Page page, string gridToShow)
{
    page.Controls.OfType<GridView>().Where(c => c.ID != gridToShow)
        .ToList().ForEach(gv => gv.Visible = false);
}
那么你可以称之为:

  HideGridView("VisibleGrid");

这种方法在哪里存在?它是在你的网页上,还是在一个单独的图书馆里。如果它是页面派生类的成员,那么它应该可以正常工作。如果将其放在单独的库中,则需要将页面传入:

private void HideGridView(Page page, string gridToShow) 
{ 
    (from control in page.Controls.OfType<GridView>()
     where control.Name !=gridToShow 
      select control).ToList().ForEach(gv=>gv.Visible = false);
 }
您还可以将其作为扩展方法:

static class MyExtensions
{
  public static void HideGridView(this Page page, string gridToShow) 
  { 
       /// same as above.
  }
}
public static void ShowGridView(this Page page, string gridToShow)
{
    page.Controls.OfType<GridView>().Where(c => c.ID != gridToShow)
        .ToList().ForEach(gv => gv.Visible = false);
}
那么你可以称之为:

  HideGridView("VisibleGrid");
给你:

this.Controls.OfType<GridView>().Where(c => c.ID != gridToShow)
    .ToList().ForEach(gv => gv.Visible = false);
给你:

this.Controls.OfType<GridView>().Where(c => c.ID != gridToShow)
    .ToList().ForEach(gv => gv.Visible = false);

Shantanu,你能用问题的形式重新表述一下吗?我不知道你在问什么。你能用问题的形式重新表述一下吗,珊塔努?我不知道你在问什么。@MUG4N:不,一等于一。我在设置它,而不是比较它。@James:它显示了一个锯齿形错误,说GridView是一种类型,但像变量一样使用。
Control
是否有一个属性
Name
?hmmm
GridView
也不@珊塔努:我刚修正了一个打字错误,你可能错过了。(那一行的末尾是帕伦斯)@MUG4N:不,一个等于一个。我在设置它,而不是比较它。@James:它显示了一个锯齿形错误,说GridView是一种类型,但像变量一样使用。
Control
是否有一个属性
Name
?hmmm
GridView
也不@珊塔努:我刚修正了一个打字错误,你可能错过了。(该行末尾的帕伦斯)