jQuery MiniUI

 找回密码
 立即注册
查看: 3128|回复: 6
打印 上一主题 下一主题

grid当前行编辑每一个单元格验证其他字段不为空后提交保存 [复制链接]

Rank: 6Rank: 6

跳转到指定楼层
楼主
发表于 2017-8-24 08:32:03 |只看该作者 |倒序浏览
本帖最后由 joyoes 于 2017-8-24 08:36 编辑

我对行里的每一个字段录入都进行一次验证,同一行里的其他字段都不能为空后,才能提交保存saveData(data),是不是使用每个单元格编辑的结束事件cellendedit,然后用行验证grid.validateRow(record)来验证其他字段是否已经录入但我在API和示例里没找到grid.validateRow(record)这个使用方法和例子,请各位大神帮忙写一下,怎么在每个row单元格编辑结束时,验证该行其他列的值是否不为空,若不为空,则提交数据保存
  1. //单元格编辑验证
  2. grid.on("cellendedit", function (e) {
  3. var grid = e.sender;
  4. var record = e.record;
  5. var field = e.field, value = e.value;
  6. var data = grid.getChanges();
  7. //指定行进行验证
  8. if(grid.validateRow(record)){
  9. //要验证当前正在编辑的行的其他列的值不为空,这里就不知道怎么写了,请各位大神指导一下,谢谢
  10. if(record.publicworkname!=""&&record.employdate!=""&&record.subsidy!=""&&record.operator!=""&&record.operatortelephone!=""){
  11. e.isValid=true;
  12. }
  13. }
  14. if(data.length>0)
  15. saveData(data);
  16. })
  17. //编辑保存
  18. function saveData(data) {
  19. var data = grid.getChanges();
  20. var json = mini.encode(data);
  21. grid.loading("保存中,请稍后......");
  22. $.ajax({
  23. url: "<?= Url::to(['poor-public-work/save-public-work-info']) ?>",
  24. data: { keyWord: json,_csrf:csrfToken },
  25. type: "post",
  26. success: function (text) {
  27. grid.reload();
  28. },
  29. error: function (jqXHR, textStatus, errorThrown) {
  30. alert(jqXHR.responseText);
  31. }
  32. });
  33. }
复制代码



Rank: 8Rank: 8

沙发
发表于 2017-8-24 10:09:58 |只看该作者
首先你这做法我们不建议,每个单元格编辑完都进行保存,这个开销很大。
验证单行可以用grid.validateRow(row)来验证
1 所有列加验证规则,比如required="true"
2 你非要结束编辑验证的话,我建议你最后一列结束编辑的时候再验证
grid.on("cellendedit",function(e){
     if(e.field=="..."){
              grid.validate(e.record);
              if(grid.isValid()){
                       保存...
             }
      }
})

Rank: 6Rank: 6

板凳
发表于 2017-8-24 11:42:20 |只看该作者
felt 发表于 2017-8-24 10:09
首先你这做法我们不建议,每个单元格编辑完都进行保存,这个开销很大。
验证单行可以用grid.validateRow(ro ...

grid.validateRow(row),这个row是怎么获取到行对象的啊?我主要就是这点不明白,是不是grid.validateRow(e.record),然后是不是像验证单元格那样:
  1. //单元格验证
  2. function onCellValidation(e){
  3. var field=e.field;
  4. var record=e.record;
  5. if(field=="publicworkname"&&record.state!="在家务农"){
  6.     mini.alert("目前状况不能录入,请与帮扶责任人联系!");
  7.     e.isValid=false;
  8. }
  9. if(record.publicworkname!=""&&record.employdate!=""&&record.subsidy!=""&&record.operator!=""&&record.operatortelephone!=""){
  10. e.isValid=true;
  11. }
  12. e.isValid=false;
  13. }
复制代码
写行验证的代码?

Rank: 6Rank: 6

地板
发表于 2017-8-24 11:45:31 |只看该作者
felt 发表于 2017-8-24 10:09
首先你这做法我们不建议,每个单元格编辑完都进行保存,这个开销很大。
验证单行可以用grid.validateRow(ro ...

求给个行验证的示例grid.validateRow(row)

Rank: 8Rank: 8

5#
发表于 2017-8-24 13:17:50 |只看该作者
joyoes 发表于 2017-8-24 11:45
求给个行验证的示例grid.validateRow(row)

row就是你这个e.record,行对象啊。

Rank: 6Rank: 6

6#
发表于 2017-8-24 13:52:35 |只看该作者
felt 发表于 2017-8-24 13:17
row就是你这个e.record,行对象啊。

我这样写了之后,发现单元格就不验证了,直接提交了到服务器了,不知道是哪里出问题了:
  1. //单元格验证
  2. function onCellValidation(record){
  3. if(record.state!="在家务农"){
  4.     //mini.alert("目前状况不能录入,请与帮扶责任人联系!");
  5.     e.isValid=false;
  6. }
  7. if(record.publicworkname!=""&&record.employdate!=""&&record.subsidy!=""&&record.operator!=""&&record.operatortelephone!=""){
  8. e.isValid=true;
  9. }
  10. e.isValid=false;
  11. }


  12. grid.on("cellendedit", function (e) {

  13. var grid = e.sender;
  14. var record = e.record;
  15. var field = e.field, value = e.value;
  16. //指定行进行验证
  17. if(field=="publicworkname"||field=="employdate"||record=="subsidy"||record=="operator"||record=="operatortelephone"){
  18. grid.validate(record);
  19. if(grid.isValid()){
  20. saveData();
  21. }
  22. }
  23. })



  24. //编辑保存
  25. function saveData() {
  26. var data = grid.getChanges();
  27. var json = mini.encode(data);
  28. grid.loading("保存中,请稍后......");
  29. $.ajax({
  30. url: "<?= Url::to(['poor-public-work/save-public-work-info']) ?>",
  31. data: { keyWord: json,_csrf:csrfToken },
  32. type: "post",
  33. success: function (text) {
  34. grid.reload();
  35. },
  36. error: function (jqXHR, textStatus, errorThrown) {
  37. alert(jqXHR.responseText);
  38. }
  39. });
  40. }
复制代码

Rank: 8Rank: 8

7#
发表于 2017-8-24 15:18:44 |只看该作者
joyoes 发表于 2017-8-24 13:52
我这样写了之后,发现单元格就不验证了,直接提交了到服务器了,不知道是哪里出问题了: ...

1 oncellvalidtion事件参数是e,不是record,当前行是e.record
2 ajax还是异步的,你保存完都已经不知道在编辑哪个单元格了,请使用同步ajax,
保存完还要刷新表格,效率就更低了,我们建议是一次保存

Archiver|普加软件

GMT+8, 2024-6-1 19:59 , Processed in 1.058184 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部