防止加载控件

Crn*_*Krv 0 c# asp.net gridview

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

基本上,我有一个ASP.NET Web窗体ObjectDataSource将提供给2个GridView的(让我们称他们gvSystemAgvSystemB).这ObjectDataSource是从SQL Server存储过程获取其数据.

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

所以我基本上想要显示gvSystemA,或者gvSystemB,但不是两者.这ObjectDataSource两个Gridview都在aspx页面上.如何防止gvSystemA或gvSystemB从代码隐藏加载?我尝试了几件事,但它仍尝试加载两个Gridviews:

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

我收到以下错误(因为gvSystemA的DataFields与gvSystemB不同):

在所选数据源上找不到名为"TELEPHONENUM"的字段或属性

Ser*_*nov 5

您需要将Visible属性设置为Not Enabled.当您设置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;
    }

}
Run Code Online (Sandbox Code Playgroud)