ObjectDataSource方法不能引用母版页方法
问题描述:
所以我有ObjectDataSource有一个更新和删除方法与它关联,并且DS被连接到一个gridview。当我调用的方法,我想重新填充在包含相同的数据网格中的母版页下拉,所以我试图调用方法如下:现在ObjectDataSource方法不能引用母版页方法
MyApp MasterPage = (MyApp)Page.Master;
MasterPage.getData();
,如果我做一个插入从网格(这是由RowCommand事件处理,而不是DS),这工作得很好,但通过DS我得到以下错误:“对象引用未设置为对象的实例。”
我可以看到aspx中的某些字段尚未从回发中获得,但是母版页如何不可用于依赖它的页面?我不应该参考它吗?有没有一些后门技巧呢?我知道我可以摆脱DS,但我想使用它,因为它使分页和排序变得如此简单。
感谢
答
检查在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;
答
您需要添加的主指令:
<%@ MasterType TypeName ="MasterPageClassName" %>
或
<%@ MasterType virtualpath="~/Masters/Master1.master" %>
http://msdn.microsoft.com/en-us/library/xxwa0ff0.aspx
更新:注释中指出的分离的TypeName和虚拟路径。
您是否在'MasterPage.getData()'之前放置了一个断点来验证MasterPage为空?如果你这样做,并发现它不是null,你可以进入'getData()',看看是否有空引用。 – mafue 2012-04-20 16:33:50
是的,masterPage为null – Limey 2012-04-20 16:35:36
当我深入研究这个问题时,它调用了方法,但是由于该方法引用了一个下拉框(它现在还不存在),所以它已经解决了。 – Limey 2012-04-20 16:54:36