子页面上MasterPage调用参数的数据源

时间:2014-07-07 22:46:20

标签: asp.net master-pages datasource

我正在使用RadPanelBar在我的母版页上调用asp数据源

<telerik:RadPanelBar ID="NavigationPanelBar" runat="server" DataSourceID="ViewUserPageNavigation"
            Skin="Web20" Width="100%" AllowCollapseAllItems="true" DataTextField="PageDescription"
            DataFieldID="CategoryId" DataFieldParentID="ParentId" DataNavigateUrlField="PageURL"
            CssClass="NavContainer">
        </telerik:RadPanelBar>

<data:ViewUserPageNavigationDataSource runat="server" ID="ViewUserPageNavigation"
    SelectMethod="GetPaged">
    <Parameters>
        <asp:ControlParameter Name="WhereClause" ControlID="__Page" PropertyName="ViewUserPageNavigationWhereClause"
            Type="String" />
        <asp:ControlParameter Name="OrderBy" ControlID="__Page" PropertyName="ViewUserPageNavigationOrderBy"
            Type="String" />
    </Parameters>
</data:ViewUserPageNavigationDataSource>

在代码后面的母版页上我有两个参数

public String ViewUserPageNavigationWhereClause
{

    get
    {
        String where = "UserId = " + HttpContext.Current.User.Identity.Name.ToString() + "";
        return where;
    }


}

public String ViewUserPageNavigationOrderBy
{
    get
    {

        String orderBy = "tblpages.PageDescription";
        return orderBy;
    }

}

但是我收到的错误是我的子页面不包含ViewUserPageNavigationWhereClause

DataBinding:'ASP.secure_index_aspx'不包含名为'ViewUserPageNavigationWhereClause'的属性。

secure_index_aspx是我的子页masterpage.Masterpage是我的主页

这个人失去了我。

1 个答案:

答案 0 :(得分:0)

我想我有点误解了这个问题,所以我重写了我的答案:

据我所知,您无法从子页面访问母版页的数据源。是否有特定原因使datasrouce位于母版页而不是子页面上?

此设置的替代方法(如果您只是寻找可重用性)是创建一个继承自页面对象的类,并将数据源控件和方法添加到该类。使站点中的所有页面都从新类而不是页面对象继承。

编辑:在我们在下面的评论中进行讨论之后,问题似乎是你不小心访问了__page对象而不是母版页上的控件。

如果您尝试访问代码隐藏中的属性而不是页面上的控件,请尝试使用&#34;此&#34;而不是__page。如果这不起作用,您应该重新考虑您的策略。您还可以将这些属性放入会话变量中,并使用会话参数。