找回密码
 立即注册

QQ登录

只需一步,快速开始

Nancy@GrapeCity
葡萄城公司职员   /  发表于:2021-8-13 11:23  /   查看:2766  /  回复:4
1金币
本帖最后由 Chelsey.Wang 于 2021-8-13 11:47 编辑

如题,我想取得某个表格中某列的最新值,并且在页面不刷新的情况下,只更新取某个单元格的值。
应用场景:在页面上显示通知表中最新添加的一条通知

最佳答案

查看完整内容

您好,大致思路可以利用AJAX异步发送请求的方式,定时更新该单元格的值。 具体实现步骤如下: 1、首先在页面上给要更新的单元格设置名称: 2、想要取某个数据表中某列的最新值,也就是说当有新的值添加到数据表中时,我拿到的是最后一行数据,那么ODATA设置如下: 这样就可以取到最后一行数据。 3、使用一点儿简单的JS代码,异步请求刷新即可: JS文件放在刷新ODATA的页面上: 4、大功告成,看下效果 ...

4 个回复

正序浏览
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-8-16 09:48:18
5#
白菜贝贝 发表于 2021-8-13 11:26
啊!你们公司内部也是用求助中心

由于客户不方便发帖,善良的技术小姐姐帮忙发了一个,
大家后面有问题,欢迎继续发新帖交流
回复 使用道具 举报
Aa金砂
高级会员   /  发表于:2021-8-13 20:30:53
4#
自问自答 广而告之
回复 使用道具 举报
白菜贝贝悬赏达人认证 活字格认证
银牌会员   /  发表于:2021-8-13 11:26:51
2#

啊!你们公司内部也是用求助中心

本帖子中包含更多资源

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

x
回复 使用道具 举报
最佳答案
最佳答案
Erik.Xue讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2021-8-13 11:23:55
来自 3#
您好,大致思路可以利用AJAX异步发送请求的方式,定时更新该单元格的值。

具体实现步骤如下:

1、首先在页面上给要更新的单元格设置名称:


2、想要取某个数据表中某列的最新值,也就是说当有新的值添加到数据表中时,我拿到的是最后一行数据,那么ODATA设置如下:


这样就可以取到最后一行数据。

3、使用一点儿简单的JS代码,异步请求刷新即可:
  1. const getData = () => {
  2.     var httpRequest = new XMLHttpRequest();
  3.     // 替换为发布后的应用地址
  4.     var url = 'http://xa-hzg-erik/testFlusOdata';
  5.     var page = Forguncy.Page;
  6.     // 刷新的单元格名称
  7.     var cell = page.getCell('aaa');
  8.     var tableName = '表1';
  9.     var colName = '文本'
  10.     var flushTime = 3000;
  11.     setInterval(() => {
  12.         if (!httpRequest) {
  13.             alert('Giving up :( Cannot create an XMLHTTP instance');
  14.             return false;
  15.         }
  16.         httpRequest.onreadystatechange = () => {
  17.             if (httpRequest.readyState === XMLHttpRequest.DONE) {
  18.                 if (httpRequest.status === 200) {
  19.                     let obj = JSON.parse(httpRequest.responseText);
  20.                     cell.setValue(obj[0][colName]);
  21.                 } else {
  22.                     alert('请求失败,请检查。');
  23.                 }
  24.             }
  25.         };
  26.         httpRequest.open('GET', `${url}/OData/GetData/${tableName}?$select=${colName}&$top=1&$orderby=ID desc`, true);
  27.         httpRequest.send();
  28.     }, flushTime);
  29. }
  30. getData();
复制代码


JS文件放在刷新ODATA的页面上:


4、大功告成,看下效果:



当然,我这里是用发布后的应用进行测试的,效果如上图,当有其他人更新数据表的值时,ODATA页面可以不进行刷新取到最新值。

附上参考demo文件。


本帖子中包含更多资源

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

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部