gczxxu 发表于 2023-6-29 23:03:28

xTools终级使用方法解密

看到格友们在使用xtools工具时。常用功能大家用的飞起。


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

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

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

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



      


      

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

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

                var val;
                var cName = ColumnNames;
                if (listview.getValue(i, cName) == null) {
                  val = "";
                } else {
                  val = listview.getValue(i, cName);
                }
                row.length
                row = val;
            }
            result.push(row);
      }
      return result;
    },
    GetColumnNameReal: function (tableName) {
      var result = new Array();

      var listview = Forguncy.Page.getListView(tableName);
      var arrobj = new Array();
      listview._grid.listviewData.columnDataInfos.forEach(e => {
            if (e.columnName != null) {
                var obj = new Object();
                obj.sort = e.bindingInfoIndex;
                obj.txt = e.columnName;
                arrobj.push(obj);
            }
      });
      let sortkeys = Object.keys(arrobj).sort(((a, b) => {
            return arrobj.sort - arrobj.sort;
      }))
      for (var i = 0; i < sortkeys.length; i++) {
            var e = sortkeys;
            result.push(arrobj.txt);
      }

      return result;
    },
    DeleteTableAllRow: function (tableName) {
      var listview = Forguncy.Page.getListView(tableName);
      var RowCount = Forguncy.Page.getListView(tableName).getRowCount();
      for (var rowCount = 0; rowCount < RowCount; rowCount++) {
            listview.deleteRow(0);
      }
      return;
    },
    AddJsonToTable: function (tableName, jsonStr) {
      var listview = Forguncy.Page.getListView(tableName);
      var spread = listview.getControl();
      var ColumnNames = this.GetColumnNameReal(tableName);
      var rowArrs = (JSON.parse(jsonStr, function (k, v) {
            if (v == null) {
                v = "";
            }
            return v;
      }));
      for (let i = 0; i < rowArrs.length; i++) {
            var newrow = new Object();
            ColumnNames.forEach(e => {
                if (rowArrs == null) {

                } else {
                  newrow = rowArrs;
                }
            });
            listview.addNewRow(newrow, true);
      }
      return;
    }
}

以上代码放在哪里呢???看图:



那么怎么使用呢???简单,继续看图:


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

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





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

Aa金砂 发表于 2023-7-2 15:11:44

有Demo吗
页: [1]
查看完整版本: xTools终级使用方法解密