【问题标题】:Showing properties from another table - Kentico显示另一个表中的属性 - Kentico
【发布时间】:2013-09-20 00:58:23
【问题描述】:

我们刚开始使用 Kentico,现在正在进行一些测试。我们坚持的一件事是在转换中显示数据。

我们有一个自定义表,例如 Author。它有一个 ID 字段,FirstName 和 SurName(均为文本)。 Book 是一种文档类型,具有 ID、Title 和一个可供我们选择作者的下拉菜单。

在一个页面上有一个数据列表,我在其中显示带有如下预览转换的书:

<div style="text-align:center;padding: 8px;margin: 4px;border: 1px solid #CCCCCC">

    <h2>
    <%# Eval("Title") %> 
    </h2>
      Author: <%# Eval("Author.FirstName") %>
    </div>

现在我们要显示作者的姓名,但是当使用 时,它会显示 ID。我们发现我们可以使用自定义函数并返回名称,但没有其他方法吗?假设我们不仅要显示作者的姓名,还要显示地址、电子邮件等等……我们真的需要为每个要显示的属性创建一个方法吗?

提前致谢,

比约恩

【问题讨论】:

    标签: kentico


    【解决方案1】:

    不,您不能以这种方式钻取相关表,因为作者的数据根本不在您与数据列表一起显示的数据源中。 但是您不必为要显示的作者的每个属性创建函数。您可以只创建一个函数,该函数将返回整个作者对象,在您的情况下为 CustomTableItem。该函数可能如下所示。

    public CustomTableItem GetAuthor(object id)
    {
        int authorId = ValidationHelper.GetInteger(id, 0);        
        var pr = new CustomTableItemProvider();
        var item = pr.GetItem(authorId, "customtable.author"); 
    
        return item;
    }
    

    然后在转换中,您将使用 GetValue() 方法获取值。

    作者:

    注意函数的每次调用都会发出一个数据库请求,所以我建议使用某种缓存。要么输出整个页面的缓存,要么你可以直接在函数内部实现一些缓存机制。

    您还可以使用 CustomQueryRepeater/DataSource 并编写自己的 SQL 查询,将图书数据与作者数据连接起来。然后你可以在你的转换中直接使用&lt;%# Eval("FirstName") %&gt;

    【讨论】:

    • 获取你使用的customtableitem:var pr = new CustomTableItemProvider(); var item = pr.GetItem(authorId, "customtable.author");当它不是可自定义的而是文档类型时,我该怎么做?
    • 那就稍微复杂一点。您必须使用 TreeProvider 类。我建议您查看 Kentico API 示例。您可以在您的 Kentico 网站实例上找到它,转到站点管理器 - 支持 - API 示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2020-09-17
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多