如何使用linq对象在asp.net页面中隐藏或显示某些控件
我正在创建一个函数来隐藏所有gridview控件,除了在函数中传递名称的控件 此处如何使用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
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
?hmmmGridView
也不@珊塔努:我刚修正了一个打字错误,你可能错过了。(那一行的末尾是帕伦斯)@MUG4N:不,一个等于一个。我在设置它,而不是比较它。@James:它显示了一个锯齿形错误,说GridView是一种类型,但像变量一样使用。Control
是否有一个属性Name
?hmmmGridView
也不@珊塔努:我刚修正了一个打字错误,你可能错过了。(该行末尾的帕伦斯)