penley 发表于 2020-11-27 17:05:34

JSViewer自定义工具栏按钮状态更新问题

本帖最后由 penley 于 2022-1-18 08:32 编辑

环境:AR14,ASP.NET Core MVC应用中使用JSViewer做报表展现。

由于我无法使用动态数据源为参数传递候选值,所以使用自己的查询界面为报表传递查询参数。
这样,JSViewer的菜单栏,除了导出功能就没什么用处了,故在我的应用中,我想隐藏菜单栏,而把菜单栏上原来的导出按钮放在工具栏上。
一、首先通过调用如下方法,隐藏了菜单栏
viewer.sidebar.toggle(false);二、参考如下文档,增加自定义导出excel按钮
https://gcdn.grapecity.com.cn/fo ... 8328&extra=page%3D1
let excelExportButton = {
                key: '$pdfExportButtonKey',
                iconCssClass: 'icon-page_excel',
                enabled: true,
                action: function (item) {
                  viewer.export('XLSX', null, true/*, { Title:"这是标题", FileName: '文件.xlsx', Multisheet: false, LayoutMode: "Galley"}*/);
                },
                onUpdate: (args, toolbarItem) => {
                  abp.log.debug("args:", args);
                  abp.log.debug("toolbarItem:", toolbarItem);
                }
            };
            viewer.toolbar.desktop.addItem(excelExportButton);

三、问题
按二中方法,可以正常添加按钮,并且可正常导出。
但有一个问题,怎么控制新增加的这个按钮状态,像其他按钮一样,无报表加载(或加载过程中)时,将按钮无效,直到加载完成再变为有效呢?我查看文档,要在onUpdate方法中更新按钮状态。该如何更新呢?怎么判断文档加载完成呢?

我看输入参数中,args.session.state 值会发生变化,是判断这个值吗?


KearneyKang 发表于 2020-11-27 17:58:51

你好,文件加载是否完成,实在该方法中 documentLoaded: () => {
            //viewer.goToPage(2)                        
      },      这是:当文档完全加载到服务器上时调用的回调。
你可以通过这个方法进行一些操作
<script type="text/javascript">
    var viewer = GrapeCity.ActiveReports.JSViewer.create({
      element: '#viewerContainer',
      reportID: '标签打印.rdlx', //报表名称和参数的传递      

      reportService: {},      
      //renderMode: 'Galley',//画廊模式
      displayMode: 'Continuous',
      // other properties
      documentLoaded: () => {
            //viewer.goToPage(2)                        
      },         
    });
</script>

页: [1]
查看完整版本: JSViewer自定义工具栏按钮状态更新问题