【问题标题】:Datasource on MasterPage calling Parameter on Child PageMasterPage 上的数据源调用子页面上的参数
【发布时间】:2014-07-07 22:46:19
【问题描述】:

我正在使用 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是我的主人

这个让我失望了。

【问题讨论】:

    标签: asp.net master-pages datasource


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • Rephistorch - 我的意思是母版页数据源正在尝试访问子页而不是母版页上的参数
    • 上面的示例代码是否正确?看起来您在母版页而不是子页上创建了这些属性。
    • 我确实在母版页上创建了这些,但是当页面加载时,它正在子页面上寻找它们,我相信这是真的,因为 controlId 是 __Page,你如何定位母版页而不是子页面?
    • 母版页数据源在子页而不是父页上寻找那些 ControlParameter 参数
    • 所以您在子页面上确实有名为“ViewUserPageNavigationWhereClause”和“ViewUserPageNavigationOrderBy”的控件?
    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多