我想在Kentico报告中添加可点击链接。报表编辑器允许您在布局中添加各种HTML标记,但它不允许您添加已插入布局的表的HTML INSIDE。 (或者,如果确实如此,则从UI或Kentico文档中看不出来。)我想在每一行中显示一个链接,并且该链接应包含该行的值。单击任何链接将打开另一个页面,显示有关特定记录的更多数据。在我的例子中,我的第一列是一个ID列,我希望它的值(在每一行中)表现得像到另一个页面的超链接,其URL包含点击的ID值作为参数。
我们可以在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>
接下来,我们必须找到每个ID字段,然后使其行为像超链接。为此,我们找到带有ID列标题的<th>,走到<table>,然后在<tbody>下找到所有<tr>。一旦我们有了每个<tr>,我们就会迭代它们:
所以这是脚本。像添加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>
请记住,如果MyIDColumnTitle不是非常独特,则此脚本可能会找到错误的表和表。修改jquery选择器以满足您的需要。您可能希望在报表周围添加包含元素ID的包装元素,以便您可以使用选择器。
使用相同的概念并使用它来在模式对话框中启动页面并不困难。