【发布时间】:2016-01-21 17:21:06
【问题描述】:
编辑:也许这会让我的问题更清楚。我想这样做,但使用 CMSSearchResults 控件和搜索索引作为数据源:
// code-in-front
<asp:Repeater ID="Repeater" ruant="server"></asp:Repeater>
// code behind
private void BindDataToRepeater()
{
DataSet ds = PopulateDataSet();
repStuff.DataSource = ds;
repStuff.DataBind();
}
我正在尝试实现自定义搜索用户控件。我的 ascx 文件中有一个 <cms:CMSSearchResults> 控件,如下所示:
<cms:CMSSearchResults ID="ssIssues" runat="server"></cms:CMSSearchResults>
在我后面的代码中,我正在研究一种方法,该方法应检索典型的自定义表智能搜索索引并将索引中的数据用作ssIssues 的数据源。以下是我目前所掌握的内容,应该可以让您大致了解我想要做什么:
private void BindSearchResults()
{
SearchIndexInfo si = SearchIndexInfoProvider.GetSearchIndexInfo(int searchIndexId);
// some tweaking to convert si to dataset
ssIssues.DataSource = si;
ssIssues.DataBind();
}
但是,我马上就遇到了一些问题,似乎找不到任何可以帮助我理解这部分搜索 api 的文档。
我得到了正确的SearchIndexInfo 对象,但它似乎没有任何方法可以访问索引中的实际数据。现在,我对 kentico 中搜索索引如何工作的理解是,它们分析 SQL Server 中的一组数据并将该数据转换为存储在 Kentico 项目中网络服务器的文件系统中的 b 树。
所以,我期待SearchIndexInfo 中的一个方法可以执行解析该索引文件并将b-tree 作为LinkedList<t> 返回的方法,或者可以提供一些参数来对链接列表进行排序的方法变成DataSet - 或者至少进行了解析并允许我进行转换。不过没有这样的运气,我不知道从这里去哪里。
我应该如何将搜索索引DataSet 绑定到CMSSearchResults 控件?
【问题讨论】:
-
控件的哪一部分是自定义的,或者是 OOTB 控件无法做到的?除了编写自定义代码之外,您想要的结果是什么?
-
我正在使用 OOTB Kentico 控件 - 这些控件不是自定义的,并且我严格使用默认的 Kentico API (v7)。我正在开发的用户控件将使用默认的 Kentico 搜索控件 - 搜索结果、搜索过滤器、搜索对话框 - 但将动态填充它们的属性并根据一些复杂的逻辑触发事件。我在用户控件中进行了设置,因为在 Visual Studio 中管理所有移动部件比通过 Kentico UI 工作要容易得多。如前所述,我只是尝试将搜索索引中的数据绑定到搜索结果控件。
-
所以从技术上讲,是的,它们是定制的。尽管您使用的是 OOTB 控件,但您正在使用自己的逻辑创建自己的控件,以复制已经编码的相同内容,您可以在 UI 中使用这些内容。那么回到我的其他问题,你想要的结果是什么?你想要一个文本框供用户输入文本吗?你想要一些过滤吗?您想要列表的自定义视图吗?
-
是的,有一些 Web 部件可以完成我需要做的部分工作,但不是全部。但是,这些 webpart 使用 Kentico 程序集中的控件。是的,我正在制作一个自定义控件,但我正在使用这些 webparts 也使用的 Kentico 控件。我只是将数据插入其中,并根据许多我不想写出也不需要你知道的参数触发不同的视图。这太麻烦了,无法在 UI 中维护。我的问题非常具体:“我应该如何将搜索索引 DataSet 绑定到 CMSSearchResults 控件?”