我在C#中有一个DataTable对象,我将该对象传递给JavaScript中的aspx类,如下所示。在JavaScript中,我遍历了PowerBI报告的页面。我需要做的就是比较PageLists(来自c#)是否包含page.DisplayName并基于此进行一些处理。请参见下面的代码:
C#:
DataTable PagesList = null; //(this is globally defined)
...
protected void Page_Load(object sender, EventArgs e)
{
PagesList = sql.QueryDataTable(String.Format("select PageLabel, DefaultPage from myTable where ReportID = '{0}';",ReportID));
}
JavaScript:
<script>
var pageslist = "<%=PagesList%>";
alert(pageslist); //This pops up: "Table"
report.getPages().then(function (pages) {
var allpages = ''
pages.forEach(function(page) {
if(pageslist.includes(page.displayName) > -1) //this is not working properly
{
allpages = allpages+'<button type="button" onclick=setPage(\''+page.name+'\')>' + page.displayName+'</button>';
}
});
...
...
在这里,如果part总是返回false,它就无法正常工作。在这种情况下,检查pageslist是否包含page.displayName的最佳方法是什么?如何接收页面列表中的项目?任何帮助将不胜感激。
答案 0 :(得分:0)
您正在使用includes
,它们返回true
或false
,因此您不需要此部分:> -1
。您可以更改条件:
if(pageslist.includes(page.displayName))
或者您可以使用indexOf
:
if(pageslist.indexOf(page.displayName) > -1)