找回密码
 立即注册

QQ登录

只需一步,快速开始

WHTECH

金牌服务用户

14

主题

33

帖子

177

积分

金牌服务用户

积分
177
WHTECH
金牌服务用户   /  发表于:2024-10-31 09:28  /   查看:281  /  回复:11
1金币
现图文列表中有一输入框,输入框的值只要发生变更就会触发服务端命令,目的是检测到输入框对应的字段的值发生变更时就会调用自己写的java插件的服务端命令,进行一些数据库该字段其他记录的值的更新,但发现图文列表中的输入框只要绑定上服务端命令,在运行时就无法变更其值了。试了下表格也是如此,只要是输入类的字段绑定上服务端命令或一些稍复杂的数据库交互命令后,运行后就无法改变这个字段所有记录的任何值。请问怎样解决这个问题?

最佳答案

查看完整内容

大佬您好,您这边demo我看了一下,出现咱们提到的这种现象和咱们服务端命令的调用有关系。 咱们B参数值的修改是在图文列表中,但是这个值修改了之后,并不会立即将数据库的值从0修改为1,修改的只有图文列表中的值,需要等图文列表的当前行变更了之后,也就是鼠标点击到其他图文列表的行,或者图文列表以外的地方,B对应的值才会在数据库中修改。 而咱们调用了服务端命令,服务端命令中有一个设置,就是执行完成之后重新加载 ...

11 个回复

倒序浏览
最佳答案
最佳答案
Grayson.Shang活字格认证 Wyn认证
超级版主   /  发表于:2024-10-31 09:28:58
来自 7#
大佬您好,您这边demo我看了一下,出现咱们提到的这种现象和咱们服务端命令的调用有关系。

咱们B参数值的修改是在图文列表中,但是这个值修改了之后,并不会立即将数据库的值从0修改为1,修改的只有图文列表中的值,需要等图文列表的当前行变更了之后,也就是鼠标点击到其他图文列表的行,或者图文列表以外的地方,B对应的值才会在数据库中修改。

而咱们调用了服务端命令,服务端命令中有一个设置,就是执行完成之后重新加载数据,等服务端命令执行完成,A的数据更新了之后,这时B的值还没有更新到数据库,重新加载数据之后,从0改为1会丢失,然后将数据0重新加载出来了。


这个问题的解决思路有两种
1、就是在服务端命令中,将B修改后的值作为参数传入到服务端命令中,使用数据表操作将B的值修改,这样问题可以解决

2、反勾选掉前面提到的设置,在B值修改之后,点击图文列表外面,或者通过图文列表切换到其他行,这样参数A和B的值都会正常更新了

本帖子中包含更多资源

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

x
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2024-10-31 11:10:13
2#
您好,您说的写了服务端命令就不能修改,应该是服务端命令正在执行,如果没有勾选异步发送请求,就要等执行完成后再进行页面操作,
如果没有不是此情况,麻烦附上一个可以复现问题的小demo,并附上一些复现操作说明。这边才能更好的理解您的问题,帮助到您呦~

本帖子中包含更多资源

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

x
回复 使用道具 举报
WHTECH
金牌服务用户   /  发表于:2024-10-31 13:53:34
3#
本帖最后由 WHTECH 于 2024-10-31 14:32 编辑
Joe.xu 发表于 2024-10-31 11:10
您好,您说的写了服务端命令就不能修改,应该是服务端命令正在执行,如果没有勾选异步发送请求,就要等执行 ...

比如这个DEMO中,图文列表中是参数C和D的值,图文列表模板中参数值字段绑定了服务端命令1,用来触发增加一行参数E。然后这个DEMO我理想中应该实现的是:只要图文列表中C和D的值变更了,就增加一条参数代码为E的记录。

而这个DEMO测试下来的情形是:
1.首次图文列表加载的时候就每条记录都触发了一次服务端命令1,实测结果为添加了两行E。
2.我在图文列表切换C或D的参数值时,会触发两次服务端命令1(想要的是触发一次,但这个感觉是图文列表机制的问题,有几条记录就触发几次),但最关键的是,参数值我从0切换1根本切换不了。

请帮忙看看,图文列表能否在首次加载的时候不触发服务端命令,绑定服务端命令后输入框的值可以正常实现变更。
我们最主要的需求其实是:图文列表模板里的参数值一旦发生变更就会调用一个服务端命令,这个服务端命令会重新根据新的参数值,计算一些其他的参数值,然后完成数据库参数表里相关参数的更新,比如DEMO中C和D的值变成1后,A和B的参数值也要重新计算。目前上边两点的机制就会导致C和D的值切换不了。
想请问下看看有什么方法可以解决或者有没有什么其他的方式来实现在C和D的参数值变更时重新计算其他参数的值并更新这一逻辑。


本帖子中包含更多资源

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

x
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2024-10-31 15:53:32
4#
在您的demo上我做了如下调整
1.执行服务端命令时,判断如果是用户输入导致的变更,才执行服务端命令


2.服务端命令中改成了添加/更新



本帖子中包含更多资源

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

x
回复 使用道具 举报
WHTECH
金牌服务用户   /  发表于:2024-10-31 16:49:27
5#
Joe.xu 发表于 2024-10-31 15:53
在您的demo上我做了如下调整
1.执行服务端命令时,判断如果是用户输入导致的变更,才执行服务端命令

好的谢谢,第一个点解决了。第二个点试了下还是有问题的,为了更直观的看出这个问题,我重新修改下了DEMO:
现在数据表仅有参数A和B,B放在了图文列表中,B的参数是布尔类型,值用选择器来切换0或1。B为0时,需要更新参数A的值为1000,
B切换为1时,A的参数值需要更新为2000。
大致如下:





但我在运行这个DEMO后,我切换B的值为1,A的值确实变成2000了,但是B的值闪了一下瞬间又变成0,B的值一直变更不了为1。


您那边受累帮忙再看看,是什么原因。

本帖子中包含更多资源

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

x
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2024-10-31 17:44:14
6#
如果还想更新B的值,需要多加一个数据表操作




本帖子中包含更多资源

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

x
回复 使用道具 举报
WHTECH
金牌服务用户   /  发表于:2024-11-1 10:30:08
9#
Grayson.Shang 发表于 2024-10-31 17:44
大佬您好,您这边demo我看了一下,出现咱们提到的这种现象和咱们服务端命令的调用有关系。

咱们B参数值 ...

试了下可以,谢谢两位大佬。

然后还想问下,图文列表模板中输入框绑定的命令,变更一条记录的输入框,整个列表所有的记录好像都会触发一次该命令。如果数据量比较大的情况下感觉会带来比较大的开销,会影响速度。有没有方法可以使得仅当前变更输入框所在的记录触发一次绑定的命令,其他记录行都不触发呢?(有时候其他并未变更的记录如果也触发绑定的命令会带来比较大的干扰)
回复 使用道具 举报
WHTECH
金牌服务用户   /  发表于:2024-11-1 10:47:41
10#
本帖最后由 WHTECH 于 2024-11-1 11:21 编辑

套个条件语句,值变更原因为用户输入好像就可以了?
回复 使用道具 举报
Grayson.Shang活字格认证 Wyn认证
超级版主   /  发表于:2024-11-1 11:26:57
11#
大佬您好,图文列表的单元格和页面上普通的单元格是一样的,文本框值变更命令的触发本身就是只有值变更的时候才会触发,并不是咱们说的一个文本框值变更,图文列列表的所有文本框命令都会触发。

我猜测可能原因是,前面提到的,咱们文本框值变更命令的触发,应用有类似于调用服务端命令,调用成功之后重新加载页面数据的功能,这个功能是会导致图文列表重新加载的。

那重新加载图文列表为什么就会有所有的文本框触发值变更命令?

是这样子的,图文列表中每一个绑定数据表字段的单元格,在图文列表渲染的时候,都会有一个从空值加载数据表数据的过程,也就是从 NULL -> 数据库数据,这种行为本身就是值变更,所以会触发命令,重新加载图文列表数据,就相当于将图文列表重新渲染了一下,那么就会有所有的行都会触发值变更,看起来就像是,一个文本值变更所有图文列表项都触发值变更了。
咱们只需要避免我前面提到的场景,若是避免不了,也是可以使用值变更原因做判断,只有用户输入,才会真正执行想要触发的逻辑
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部