ObjectDataSource方法不能引用母版页面方法

时间:2012-04-20 16:26:59

标签: asp.net master-pages

所以我有ObjectDataSource,它有一个与之关联的更新和删除方法,DS被连接到gridview。当我调用这些方法时,我想重新填充Master页面中包含与网格相同数据的下拉列表,所以我试着按如下方式调用这些方法:

            MyApp MasterPage = (MyApp)Page.Master;
            MasterPage.getData();

现在,如果我从网格进行插入(由RowCommand事件而不是DS处理),这可以正常工作,但通过DS我得到以下错误:“对象引用未设置为实例一个对象。“

我可以看到aspx上的某些字段还没有从回发中获得,但是如何使母版页不可用于依赖它的页面?我不应该参考它吗?这有什么后门伎俩吗?我知道我可以摆脱DS,但我想使用它,因为它使分页和排序变得如此简单。

由于

2 个答案:

答案 0 :(得分:1)

检查masterpage-contentpage life-cycle中的事件顺序。您可以将代码移动到主页可以访问下拉框后触发的事件。


编辑:另类

如果您无法移动代码,请尝试将数据存储在母版页的属性中,然后,在初始化下拉列表后,返回母版页并获取数据。

protected object SomePropertyICreatedToStoreData {get;set;}

void GetData()
{
    // get the data (this part works already)
    var theData = WhereTheDataComesFrom

    // bind to dropdownlist - doesn't work, so...
    this.SomePropertyICreatedToStoreData = theData;
}

......稍后

     this.MyDropDownList.DataSource = this.SomePropertyICreatedToStoreData;

答案 1 :(得分:0)

您需要添加Master指令:

<%@ MasterType TypeName ="MasterPageClassName" %>

<%@ MasterType virtualpath="~/Masters/Master1.master" %>

http://msdn.microsoft.com/en-us/library/xxwa0ff0.aspx

更新:评论中指出的分隔的TypeName和虚拟路径。