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则是当前页面中表格数据
我感觉其它应该不用多说什么了。。。
有Demo吗
页:
[1]