penley 发表于 2020-12-23 14:11:07

JSViewer目前遇到的悬而未决的问题汇总

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

将JSViewer目前遇到的悬而未决的问题汇总一下,以方便跟踪:
1、打印预览后点击“取消”,“准备打印中”的提示框无法自动关闭
回复新版本已修复,待升级,但也不知什么时候更新,具体哪个js版本。


2、动态绑定的数据源下的数据集无法做为报表参数的“可选值”和“默认值”。
不知是产品目前不支持还是bug。如果产品不支持,在设计界面为什么又可以选择呢,选择了但不起作用很奇怪。
目前无法使用JSViewer的过滤面板,只能自己制作查询界面。


3、无预览打印时(先预览再打印正常),动态绑定数据源时无法获取Http上下文
数据源定位的回调中,无法获取HttpContext信息(HttpContx一直为null),进而无法确定当前登录用户,也就无法打印需要以当前用户权限查看的报表,只能打印公开报表。
目前无法使用无预览打印功能,批量打印单据功能也要先预览才行。

4、Linux 容器中部署,JSViewer打印中文乱码
报表发布以“mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim”为镜像的容器中运行,中文乱码。
装了相应的字体也不行。
目前只能考虑将JSViewer工具栏打印按钮隐藏,禁止用户使用此功能。

5、预览和导出不统一,并且定位错误困难
很多报表在JSViewer中预览显示正常,但在导出Excel提示输入的字符串格式不正确。很莫名其妙,并且提示消息太笼统,无法定位错误的位置。
目前无法定位问题。


KearneyKang 发表于 2020-12-23 17:32:01

本帖最后由 KearneyKang 于 2020-12-23 17:36 编辑

你好第一个问题显示打印出现准备打印不取消的问题,现在在新版本中已经解决你可以下载最细的demo示例然后进行替换,最新demo的下载链接:https://github.com/activereports/WebSamples14


第二个问题

第三个问题,已经反馈给了研发


第四个问题,字体显示的问题,我这边进行了 验证,但是没有出现你说真的这种情况


第五个问题,你可以描述的更加详细一点不。我这边去验证测试下

penley 发表于 2020-12-24 11:57:12

第4个问题,你确认报表程序在以“mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim”为镜像的容器中运行
主机操作系统为CentOS

上次我发的Demo里Dockerfile文件
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

WORKDIR /src
RUN rm /etc/apt/sources.list
ADD sources.list /etc/apt/
RUN apt-get update && apt-get install -y \
    apt-transport-https ca-certificates \
    ttf-mscorefonts-installer \
    fontconfig

FROM base AS final
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "ARJSViewerTest.dll"]

容器跑起来后,我也按网上的方法,把报表中的字体复制到了容器中,可以查看到字体的列表。

第5个问题:
预览正常如下:


但导出时,提示:


详细错误:
{"Error":"Input string was not in a correct format.","message":"Input string was not in a correct format.","details":"System.FormatException: Input string was not in a correct format.\n   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)\n   at GrapeCity.SharpCells.Implementation.Cell.set_Value(Object value)\n   at GrapeCity.SharpCells.MSApi.Range.set_Value(Object value)\n   at GrapeCity.ActiveReports.Core.Export.Excel.Page.I..( context,  renderingArea, ILayoutArea layoutArea)\n   at GrapeCity.ActiveReports.Core.Export.Excel.Page.I..Render( context, ILayoutArea layoutArea)\n   at GrapeCity.ActiveReports.Core.Export.Excel.Page.I...Accept( visitor)\n   at GrapeCity.ActiveReports.Core.Export.Excel.Page.I...Accept( visitor)\n   at GrapeCity.ActiveReports.Core.Export.Excel.Page.I...Accept( visitor)\n   at GrapeCity.ActiveReports.Core.Export.Excel.Page.I...Accept( visitor)\n   at GrapeCity.ActiveReports.Core.Export.Excel.Page.I..Traverse( traverser, ILayoutPage page)\n   at GrapeCity.ActiveReports.Export.Excel.Page.ExcelExport.RenderPages(ILayoutTree layoutTree,  context)\n   at GrapeCity.ActiveReports.Export.Excel.Page.ExcelExport.Export(ILayoutTree layoutTree, Stream stream, ExcelExportSettings settings)\n   at GrapeCity.ActiveReports.Export.Excel.Page.ExcelExport.Export(IReport report, Stream stream, ExcelExportSettings settings)\n   at .Export(Object document, Func`2 getOutStreamFn,  exportSettings)\n   at .(`1 ,  )"}

KearneyKang 发表于 2020-12-24 14:46:53

打印的问题,还可以这样解决GrapeCity.ActiveReports.JSViewer.create({
      element: '#viewerContainer',
      reportService: {
      url: '报表服务地址'
      },
      action: (actionType, actionParams) => {
      switch (actionType) {
          case 'print':
            setTimeout(() => {
            var box = document.getElementById("modal-root")
            if (box) {
                //删除打印提示
                box.parentNode.removeChild(box)
            }
            }, 5000)
            break

          default:
            break
      }
      }
    })第四个问题,我根据你的描述去测试下

penley 发表于 2021-8-6 09:26:23

这5个问题,目前只剩下2和3未解决,其他均已解决。如果这两个可以解决的话,能解决非常大的问题,会减少很多工作量。2能解决,我就可使用ar自带的查询面板,而不用自定义;3能解决,就可以实现同一报表按当前登录用户的权限来控制数据的展示了。

KearneyKang 发表于 2021-8-6 10:26:44

你好,参数自定义的问题,现在AR15已经可以实现参数面板自定义。具体你可以看看这个实例:https://demo.grapecity.com.cn/ActiveReports/ASPNET/Controlexplorer/Viewers/Default.aspx?category=1001&action=DB4

penley 发表于 2021-8-6 11:05:26

面板是可以定义,但我们用的是动态数据源,无法给面板中的列表提供备选的值。需要参数支持动态数据源才可以。

KearneyKang 发表于 2021-8-6 11:20:36

你好,你的参数绑定动态数据源这块目前实现不了,因为动态数据源需要报表加载的时候触发后端数据才能执行后端的动态数据源的操作。现在参数选择这里不能触发后端的方法。所以不行,目前这边也不支持

wengMQ 发表于 2021-12-16 15:06:03

后端获取HttpContext信息
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=138284&page=1#pid490604

Bella.Yuan 发表于 2021-12-16 15:13:20

wengMQ 发表于 2021-12-16 15:06
后端获取HttpContext信息
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=138284&page=1#pi ...

:hjyzw:
页: [1] 2
查看完整版本: JSViewer目前遇到的悬而未决的问题汇总