那大概就知道什么原因了。我看您的代码是每次重新刷新整个页面,所有的标签都是重置的,但是我们内部代码不是通过class去判断的谁选中的。而是维护了一个被选中的表示,然后打开报表是将这个被标识的打开。
咱们会有问题是因为我们标识的还是原来的报表,即使页面css改了,但是标识没有改,所以打开的还是以前的。
如果是这个原因的话,可能打开也要重新写了,但是也有办法。您将原来的打开直接换掉,换成自己的,然后新的绑定事件执行以下操作:
1.关闭文件页面
2.打开新的报表
关闭文件页面比较简单,只要执行返回按钮就可以:
- document.getElementsByClassName("gc-btn gc-btn--block gc-btn--with-icon gc-btn--accent gc-size-sm")[0].click()
复制代码
2.打开新的报表也还可以,咱们可以通过className获取到谁被选中了
也就是class中包含:ard-file-view-card--selected的,然后获取它的child,拿到对应的报表id。
然后通过以下代码去打开新的报表:
- var api = GrapeCity.ActiveReports.Designer.apiOf('ar-web-designer');
- api.documents.openById('1.rdlx', { platform: 'rdlx', type: 'report', subType: 'cpl'}).then(() => { console.log('An existing report "MyReport.rdlx" is opened.'); });
复制代码 上面通过openById,去用id打开一个新的报表,后缀一般都是rdlx就可以。
|