找回密码
 立即注册

QQ登录

只需一步,快速开始

zhanglibing

注册会员

5

主题

21

帖子

60

积分

注册会员

积分
60
zhanglibing
注册会员   /  发表于:2023-9-25 13:31  /   查看:2457  /  回复:17
1金币




自定义了按钮,如果我想达到删除报表后,刷新上面的列表该如何实现,我是用js进行dom删除元素和加载元素,在点击其中一个按钮打开,无法定位打选中的按钮

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

17 个回复

正序浏览
Felix.LiWyn认证
超级版主   /  发表于:2023-9-28 15:03:12
18#
您可以参考一下我上面说的那个代码,去手动调用返回按钮:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
zhanglibing
注册会员   /  发表于:2023-9-28 14:07:30
17#
如何我选中执行openById 后打开打开这个界面呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
zhanglibing
注册会员   /  发表于:2023-9-28 14:05:57
16#
openById只是会执行,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-9-27 18:20:23
15#
如果是RPX,就是把上面的那个第一个对象改成如下:

  1.   type: {
  2.       platform: "rpx",  //创建区域报表
  3.       type: "report"
  4.     }
复制代码
就可以,然后正常传***.rpx 即可。
但是我们现在不推荐使用区域报表了,现在开发也已经不在更新了。如果可以,后续的推荐开始更新rdlx。谢谢
回复 使用道具 举报
zhanglibing
注册会员   /  发表于:2023-9-27 17:05:01
14#
我们就需要rpx ,rdlx我们暂时不需要,api.documents.openById这个api貌似不会有打开报表的效果
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-9-26 12:26:14
13#
那大概就知道什么原因了。我看您的代码是每次重新刷新整个页面,所有的标签都是重置的,但是我们内部代码不是通过class去判断的谁选中的。而是维护了一个被选中的表示,然后打开报表是将这个被标识的打开。
咱们会有问题是因为我们标识的还是原来的报表,即使页面css改了,但是标识没有改,所以打开的还是以前的。
如果是这个原因的话,可能打开也要重新写了,但是也有办法。您将原来的打开直接换掉,换成自己的,然后新的绑定事件执行以下操作:
1.关闭文件页面
2.打开新的报表

关闭文件页面比较简单,只要执行返回按钮就可以:
  1. 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。
然后通过以下代码去打开新的报表:
  1. var api = GrapeCity.ActiveReports.Designer.apiOf('ar-web-designer');
  2. api.documents.openById('1.rdlx', { platform: 'rdlx', type: 'report', subType: 'cpl'}).then(() => { console.log('An existing report "MyReport.rdlx" is opened.'); });
复制代码
上面通过openById,去用id打开一个新的报表,后缀一般都是rdlx就可以。
回复 使用道具 举报
zhanglibing
注册会员   /  发表于:2023-9-26 09:10:21
12#
打开是原生的,不是自定义的,只是把  "打开报表" 字样改成了 "打开"
回复 使用道具 举报
zhanglibing
注册会员   /  发表于:2023-9-26 08:51:21
11#
我调用了自定义的refresh后,就会出现打开的报表和选中的报表不一致问题,是要如何让实现才能正常呢
回复 使用道具 举报
zhanglibing
注册会员   /  发表于:2023-9-26 08:49:01
10#
//重新渲染报表里列表的dom元素
function resetPanel(list) {
    var cardsObj = $('div[class="ard-file-view-list ard-file-view-list--cards"]');
    var cardBtns = cardsObj.find('button');
    for (var i = 0; i < cardBtns.length; i++) {
        cardsObj[0].removeChild(cardBtns[i]);
    }

    for (var i = 0; i < list.length; i++) {
        var cardInfo = list[i];
        let cardEle = $('<button type="button" class="gc-btn ard-file-view-card gc-btn--block gc-btn--custom"><div class="ard-file-view-card__icon"><i class="gc-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#fff" opacity="0.2" d="M15.996 4H5a1 1 0 00-1 1v15a1 1 0 001 1h13a1 1 0 001-1V7.004z"></path><path class="ard-file-view-icon--accent" d="M15.996 4H5c-.553 0-1 .541-1 1.092v15c0 .553.447.908 1 .908h13c.553 0 1-.355 1-.908V7.004zM16 5.573l1.5 1.52H16zM18 20H5V5h10v3h3z"></path><g class="ard-file-view-icon--accent-secondary"><path d="M7 8h1v3H7zM9 6h1v5H9zM11 7h1v4h-1z"></path></g><g class="ard-file-view-icon--base" opacity="0.6"><path d="M7 12h9v1H7zM7 14h9v1H7zM7 16h9v1H7zM7 18h6v1H7z"></path></g></svg></i></div><div class="ard-file-view-card__name" title="' + cardInfo.Name + '"><span>' + cardInfo.Name + '</span></div></button>');
        cardsObj.append(cardEle);
        addListenEvent(cardEle);
    }
}
//重新监听点击事件
function addListenEvent(obj) {
    obj.click(function () {
        obj.addClass('ard-file-view-card--selected').addClass('gc-btn--accent');
        obj.siblings().removeClass('ard-file-view-card--selected').removeClass('gc-btn--accent');
    });
}
//自定义的刷新
function refresh() {
    //主动获取报表列表
    getReportList(resetPanel);
}
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-9-25 18:04:05
9#
这个可能就得专门排查了。

您可以大概说一下您的打开报表的时候,执行的是什么逻辑,我看一下您是怎么获取的标签ID。其次,你可以看一下你选中的时候,高亮的那个。是不是你代码里获取的。
这个可能得一步一步看,您可以把上面提到的,打开或新增后那些对应的代码贴一下我们一起看一下
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部