带有自定义查询的 Kentico 中继器

Kentico Repeater with Custom Query

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

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

我正在尝试从此 table 中获取符合特定月份和年份标准的行。例如给我所有 Month=2 and Year=2018 的记录。这些参数将通过查询字符串传递

我有一个自定义存储过程,我想接收两个 int(或字符串)参数,然后 return 所有匹配行的集合。


我正在使用 RepeaterWithCustomQuery 来调用过程并处理生成的行。正如您在下面看到的,查询字符串参数被命名为 "year" 和 "monthnumber".

查询

Me.PR.PREDetailSelect

When my Webpart is set up in this configuration I get the following error:

In my Query, I have tried:

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/>

如有任何帮助,我们将不胜感激(在此先感谢 Brendan)。最后,当我试图更改名称以保护无辜者时,请不要过于关注特定对象的名称。

那些 macros for queries 不适用于 stor proc。如果您不传递任何内容,系统会生成此错误条件 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

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

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

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