C# 阻止控件加载

C# 阻止控件加载,c#,asp.net,gridview,C#,Asp.net,Gridview,如何防止加载显示在ASPX页面中的控件 基本上,我有一个ASP.NET web表单,其中有一个ObjectDataSource,它提供了两个GridView(我们称它们为gvSystemA和gvSystemB)。该ObjectDataSource正在从SQL Server存储过程获取其数据 该存储过程根据“System”参数的值从系统A或系统B中提取数据。这两个系统完全不同,因此该存储过程的输出也不同 所以我基本上想显示gvSystemA,或者gvSystemB,但不是两者都显示。ObjectD

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

基本上,我有一个ASP.NET web表单,其中有一个
ObjectDataSource
,它提供了两个GridView(我们称它们为
gvSystemA
gvSystemB
)。该
ObjectDataSource
正在从SQL Server存储过程获取其数据

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

所以我基本上想显示
gvSystemA
,或者
gvSystemB
,但不是两者都显示。
ObjectDataSource
和两个GridView都在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”的字段或属性

您需要设置未启用的属性。当您设置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;
    }

}
您需要设置未启用的属性。当您设置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;
    }

}

是的,这就成功了。不知道为什么,但我从未想过使用Visible,因为我认为如果Enabled=false不起作用,Visible也不会起作用。但现在,它使可视性与用户界面相关。谢谢是的,这就成功了。不知道为什么,但我从未想过使用Visible,因为我认为如果Enabled=false不起作用,Visible也不会起作用。但现在,它使可视性与用户界面相关。谢谢