防止加载控件

时间:2014-01-16 15:59:23

标签: c# asp.net gridview

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

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

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

所以我基本上想要显示gvSystemAgvSystemB,但不能同时显示两者。 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;
        }
    }

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

  

在所选数据源中找不到名为“TELEPHONENUM”的字段或属性

1 个答案:

答案 0 :(得分: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;
    }

}