2014-01-16 57 views
0

如何防止加载ASPX页面中显示的控件?防止加载控件

基本上,我有一个ASP.NET Web表单,它带有一个供给2个GridViews(我们称之为gvSystemAgvSystemB)的单个ObjectDataSourceObjectDataSource正在从SQL Server存储过程获取其数据。

该存储过程从系统A或系统B提取数据,具体取决于“系统”参数的值。这两个系统完全不同,因此该存储过程的输出也不同。

所以我基本上想要显示gvSystemAgvSystemB,但不是两者。 ObjectDataSource和两个Gridviews都在aspx页面上。如何防止从代码隐藏加载gvSystemA或gvSystemB?我试过几件事情,但它仍然会尝试加载两个GridView:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if ((string)HttpContext.Current.Session["System"] == "sysA") 
     { 
      gvSystemB.Enabled = false; 
     } 
     else 
     { 
      gvSystemA.Enabled = false; 
     } 
    } 

而且我得到以下错误(从gvSystemA的数据域是不同的,从gvSystemB):

字段或属性与名称'TELEPHONENUM'未在所选数据源上找到

回答

5

您需要设置Visible属性未启用。当你设置Visible = false时,它应该从UI隐藏,不应该做数据绑定。

protected void Page_Load(object sender, EventArgs e) 
{ 

    if ((string)HttpContext.Current.Session["System"] == "sysA") 
    { 
     gvSystemB.Visible = false; 
    } 
    else 
    { 
     gvSystemA.Visible = false; 
    } 

} 
+0

是的,这是诀窍。不知道为什么,但我从来没有想过使用Visible,因为我认为如果Enabled = false不起作用,Visible也不会。但是现在它使Visible与用户界面相关的感官。谢谢 ! –