首页 > 解决方案 > 带有自定义查询的 Kentico 中继器

问题描述

好的,我们开始吧。
使用 Kentico 11/Portal 引擎(无热修复)

有一个包含仅内容页面类型的表。一个重要的字段是日期和时间字段。

我正在尝试从该表中获取与特定月份和年份条件匹配的行。例如给我所有的记录在哪里Month=2 and Year=2018。这些参数将通过查询字符串传递,

我有一个自定义存储过程,我想接收两个 int(或字符串)参数,然后返回所有匹配行的集合。我正在使用 RepeaterWithCustomQuery 来调用该过程并处理结果行。正如您在下面看到的,查询字符串参数被命名为“year”和“monthnumber”。 查询

在此处输入图像描述


在此处输入图像描述

Me.PR.PREDetailSelect

在此处输入图像描述 在此配置中设置我的 Webpart 时,我收到以下错误: 在我的查询中,我尝试过:在此处输入图像描述


EXEC Proc_Custom_PRDetails @MonthNumber = ##ORDERBY##; @Year = ##WHERE##<br/>
EXEC Proc_Custom_PRDetails @MonthNumber = ##ORDERBY##, @Year = ##WHERE##<br/>
EXEC Proc_Custom_PRDetails @MonthNumber = ##ORDERBY## @Year = ##WHERE##<br/>

任何帮助将不胜感激(在此先感谢布伦丹)。最后,当我试图更改名称以保护无辜者时,不要太拘泥于特定对象的名称。

标签: kentico

解决方案


这些用于查询的宏并不意味着与 stor procs 一起使用。如果您不传递任何内容,系统会生成此错误条件 1=1,这样它就不会破坏 sql 语句,如下所示:

SELECT ##TOPN## ##COLUMNS##
FROM View_CMS_Tree_Joined AS V
INNER JOIN CONTENT_MenuItem AS C
ON V.DocumentForeignKeyValue = C.MenuItemID AND V.ClassName = N'CMS.MenuItem'
WHERE ##WHERE##
ORDER BY ##ORDERBY##

您需要将 stor proc 转换为 SQL 语句,然后您可以使用这些SQL 宏或使用不带参数的 stor proc

如果查看上面的查询where不好,因为系统会进行调整,但是您可以使用order bycolumns,但它们都必须存在(我认为它按原样传递它们):

exec proc_test ##ORDERBY##, ##COLUMNS##

老实说,我建议不要这样做,而且调用 stor proc 不会获得太多好处。


推荐阅读