|
本帖最后由 chenweibinx 于 2019-3-20 17:01 编辑
想要实现的效果:页面有一个select表示“状态”,数据有:未开、新增、评级、复核,当选中其中一个之后,就能够自动过滤grid显示的内容中“状态”对应的数据
问题:grid显示的是接口那边的数据,没有“状态”的字段,但是我这边是将数据存入X5的数据库,只有X5的数据库有“状态”的字段,所以我需要将X5遍历看对应的单是什么状态赋值给grid的字段,但是我用渲染,几十个数据渲染就要10来秒,请问有什么方法可以优化的吗?
具体代码如下:
// 过滤单据状态
Model.prototype.select2Change = function(event) {
this.p = "1";
var Dgrid = this.comp('grid_applyno');
Dgrid.refresh();
this.p = "";
var status = this.comp("select2").val();
if (status === "未开" || status === "新增" || status === "评级" || status === "复核") {
Dgrid.setFilter("");
Dgrid.setFilter("$row.val(\"COLSTATUS\") == '" + status + "'");
} else {
Dgrid.setFilter("");
}
Dgrid.refresh();
};
// 渲染
Model.prototype.grid_applynoCellRender = function(event) {
if (this.p === "1") {
var mdata = this.comp("mainData");
var ApplyNoData = this.comp("ApplyNoData");
ApplyNoData.saveData();
var appno = "";
var itemno = "";
if (event.colName == "COLSTATUS") {
var row1 = event.row;
appno = row1.val("COL");
itemno = row1.val("COL1");
mdata.filters.clear();
mdata.setFilter("filter1", "fApplyNo='" + appno + "'");
mdata.setFilter("filter2", "fItemNo='" + itemno + "'");
mdata.refreshData();
if (mdata.count() === 0) {
// event.html = "<p>" + "未开" + "</p>";
var rows = ApplyNoData.find([ "COL", "COL1" ], [ appno, itemno ]);
if (rows.length > 0) {
rows[0].val("COLSTATUS", "未开");
}
} else {
var rows1 = ApplyNoData.find([ "COL", "COL1" ], [ appno, itemno ]);
if (rows1.length > 0) {
rows1[0].val("COLSTATUS", mdata.getValue("fState"));
}
// event.html = "<p>" + mdata.getValue("fState") + "</p>";
}
}
}
};
|
|