在Kentico报告中创建链接

问题描述 投票:0回答:1

我想在Kentico报告中添加可点击链接。报表编辑器允许您在布局中添加各种HTML标记,但它不允许您添加已插入布局的表的HTML INSIDE。 (或者,如果确实如此,则从UI或Kentico文档中看不出来。)我想在每一行中显示一个链接,并且该链接应包含该行的值。单击任何链接将打开另一个页面,显示有关特定记录的更多数据。在我的例子中,我的第一列是一个ID列,我希望它的值(在每一行中)表现得像到另一个页面的超链接,其URL包含点击的ID值作为参数。

hyperlink report reporting kentico
1个回答
0
投票

我们可以在Kentico报告中使用jquery来允许特定字段中的每个值在单击时打开链接。在我的情况下,我有一个URL,我想从报告中嵌入一个ID值。我想打开一个管理页面,其URL如下所示(其中9999被我的报告中的记录ID替换):

/CMSModules/AdminControls/Pages/UIPage.aspx?elementguid=00000000-0000-abcd-0123-000000000000&objectid=9999&displaytitle=false

因此,我们假设报告中的第一个字段是ID列,我们希望使显示的ID行为类似于指向其他页面的链接。

首先我们需要jquery。在“<> Source”模式下编辑报表的布局,并为jquery添加脚本引用,例如您可以从code.jquery.com获取的脚本引用,或者只在本地引用它(如果有的话):

<script src="/jquery-3.4.0.min.js"></script>

Report layout

接下来,我们必须找到每个ID字段,然后使其行为像超链接。为此,我们找到带有ID列标题的<th>,走到<table>,然后在<tbody>下找到所有<tr>。一旦我们有了每个<tr>,我们就会迭代它们:

  1. 像超链接一样为ID值加下划线
  2. 将光标设置为像超链接一样的手
  3. 添加onclick事件以使用我的ID字段值打开URL(在新选项卡中)

所以这是脚本。像添加jquery脚本标记一样添加它。 (但在jquery脚本标记之后添加它)

<script>
$('th:contains("MyIDColumnTitle")').parents('table').first().children('tbody').children('tr').each(function() {
    $(this).children('td').first()
        .css('text-decoration','underline')
        .css('cursor','pointer')
        .click(function(){
            var thisId = $(this).text();
            var u = "/CMSModules/AdminControls/Pages/UIPage.aspx?elementguid=00000000-0000-abcd-0123-000000000000&objectid=" + thisId + "&displaytitle=false"
            window.open(u,'_blank');
        });
});
</script>

Sample report

请记住,如果MyIDColumnTitle不是非常独特,则此脚本可能会找到错误的表和表。修改jquery选择器以满足您的需要。您可能希望在报表周围添加包含元素ID的包装元素,以便您可以使用选择器。

使用相同的概念并使用它来在模式对话框中启动页面并不困难。

© www.soinside.com 2019 - 2024. All rights reserved.