看到格友们在使用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[j];
- if (listview.getValue(i, cName) == null) {
- val = "";
- } else {
- val = listview.getValue(i, cName);
- }
- row.length
- row[cName] = 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[a].sort - arrobj[b].sort;
- }))
- for (var i = 0; i < sortkeys.length; i++) {
- var e = sortkeys[i];
- result.push(arrobj[e].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[i][e] == null) {
- } else {
- newrow[e] = rowArrs[i][e];
- }
- });
- listview.addNewRow(newrow, true);
- }
- return;
- }
- }
复制代码
以上代码放在哪里呢???看图:
那么怎么使用呢???简单,继续看图:
大概解释一下,最近有格友想从弹出页面的表格中选出一条或多条数据,合并到当前表格中,自对相同行数据进行数量增加和去重处理。这里面最麻烦的是怎么有效获取到弹出页和当前页表格中的数据。
当然数据获取到之后,大神们自己知道怎么处理这些数据达到自己的要求了。
以上代码中popObject取出的是弹出页中保存的值或数据,当前了,也可以通过多次使用 x回调存值,保存多个值或表格数据
tableObject则是当前页面中表格数据
我感觉其它应该不用多说什么了。。。
|