找回密码
 立即注册

QQ登录

只需一步,快速开始

gczxxu

银牌会员

80

主题

953

帖子

3079

积分

银牌会员

积分
3079
gczxxu
银牌会员   /  发表于:2023-6-29 23:03  /   查看:1808  /  回复:1
看到格友们在使用xtools工具时。常用功能大家用的飞起。


但是一但有点小复杂的要求,就感觉力不从心了。下面就揭秘终级使用方法,用于解决各种平常不方便解决的问题。

注意:以下只是揭秘xtools中的数据接口,大家通过接口拿到数据后,你们就可以根据自己的需要,想怎么玩就怎么玩了。

先附上xtools自定义插件代码:(注释自己看)
  1. xTools.Fun = {
  2.     CustomAdd: function (key, tableName) {
  3.         //得到弹出页保存的数据
  4.         var value = xTools.BackCall.Getarg(key);
  5.         if (value == null) {
  6.             return;
  7.         }
  8.         var popObject=JSON.parse(value);

  9.         //取出当前页面中指定表的数据
  10.         var RowCount = Forguncy.Page.getListView(tableName).getRowCount();
  11.         var tableObject = this.GetTableTogetherRowReal(tableName, 0, RowCount);
  12.       
  13.         //*********处理弹出页取回的数据popObject和当前页表格数据tableObject,进行去重指定字段增加处理 */



  14.         


  15.         

  16.         // 清空当前表格内容
  17.         this.DeleteTableAllRow(tableName);
  18.         // 把处理后的数据写入当前表格中
  19.         this.AddJsonToTable(tableName, value);
  20.     },
  21.     GetTableTogetherRowReal: function (tableName, start, end) {
  22.         var result = new Array();
  23.         var listview = Forguncy.Page.getListView(tableName);
  24.         var ColumnNames = this.GetColumnNameReal(tableName);

  25.         for (i = start; i < start + end; i++) {
  26.             var row = new Object();
  27.             for (j = 0; j < ColumnNames.length; j++) {

  28.                 var val;
  29.                 var cName = ColumnNames[j];
  30.                 if (listview.getValue(i, cName) == null) {
  31.                     val = "";
  32.                 } else {
  33.                     val = listview.getValue(i, cName);
  34.                 }
  35.                 row.length
  36.                 row[cName] = val;
  37.             }
  38.             result.push(row);
  39.         }
  40.         return result;
  41.     },
  42.     GetColumnNameReal: function (tableName) {
  43.         var result = new Array();

  44.         var listview = Forguncy.Page.getListView(tableName);
  45.         var arrobj = new Array();
  46.         listview._grid.listviewData.columnDataInfos.forEach(e => {
  47.             if (e.columnName != null) {
  48.                 var obj = new Object();
  49.                 obj.sort = e.bindingInfoIndex;
  50.                 obj.txt = e.columnName;
  51.                 arrobj.push(obj);
  52.             }
  53.         });
  54.         let sortkeys = Object.keys(arrobj).sort(((a, b) => {
  55.             return arrobj[a].sort - arrobj[b].sort;
  56.         }))
  57.         for (var i = 0; i < sortkeys.length; i++) {
  58.             var e = sortkeys[i];
  59.             result.push(arrobj[e].txt);
  60.         }

  61.         return result;
  62.     },
  63.     DeleteTableAllRow: function (tableName) {
  64.         var listview = Forguncy.Page.getListView(tableName);
  65.         var RowCount = Forguncy.Page.getListView(tableName).getRowCount();
  66.         for (var rowCount = 0; rowCount < RowCount; rowCount++) {
  67.             listview.deleteRow(0);
  68.         }
  69.         return;
  70.     },
  71.     AddJsonToTable: function (tableName, jsonStr) {
  72.         var listview = Forguncy.Page.getListView(tableName);
  73.         var spread = listview.getControl();
  74.         var ColumnNames = this.GetColumnNameReal(tableName);
  75.         var rowArrs = (JSON.parse(jsonStr, function (k, v) {
  76.             if (v == null) {
  77.                 v = "";
  78.             }
  79.             return v;
  80.         }));
  81.         for (let i = 0; i < rowArrs.length; i++) {
  82.             var newrow = new Object();
  83.             ColumnNames.forEach(e => {
  84.                 if (rowArrs[i][e] == null) {

  85.                 } else {
  86.                     newrow[e] = rowArrs[i][e];
  87.                 }
  88.             });
  89.             listview.addNewRow(newrow, true);
  90.         }
  91.         return;
  92.     }
  93. }
复制代码


以上代码放在哪里呢???看图:
A)3LV2]5JAVO}%I_ZRCVT_T.png955738830.png


那么怎么使用呢???简单,继续看图:
`J]0%0G@[F{XBI%{P72UX54.png464696654.png

大概解释一下,最近有格友想从弹出页面的表格中选出一条或多条数据,合并到当前表格中,自对相同行数据进行数量增加和去重处理。这里面最麻烦的是怎么有效获取到弹出页和当前页表格中的数据。
当然数据获取到之后,大神们自己知道怎么处理这些数据达到自己的要求了。

以上代码中popObject取出的是弹出页中保存的值或数据,当前了,也可以通过多次使用 x回调存值,保存多个值或表格数据
tableObject则是当前页面中表格数据





我感觉其它应该不用多说什么了。。。

评分

参与人数 3金币 +66 满意度 +10 收起 理由
+ 5
Shawn.Liu + 66 赞一个!
lovert + 5

查看全部评分

1 个回复

倒序浏览
Aa金砂
高级会员   /  发表于:2023-7-2 15:11:44
沙发
有Demo吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部