十六、选择弹窗(DialogueWindow)
ComBo类控件在进行选择操作时,能显示的内容比较少。如果某种需求是在进行选择操作时,需要能看到更多的字段内容,那么DialogueWindow这个控件就能满足你的需求了。
相较于ComBo类控件的设置,DialogueWindow控件的设置就比较复杂点了。首先在字段属性的编辑类型选择DialogueWindow,然后往下翻找到数据源配置,点击进入。
需要注意的是,当字段的编辑类型选取【DialogueWindow】后,会在字段列表中自动创建一个xxxxText的字段(此处的xxxx表示的是DialogueWindow控件的字段名)。比如:当前字段为ShouKuanZhangHu,编辑类型选择DialogueWindow之后,字段列表中会多出一个ShouKuanZhangHuText字段。请不要随意删除这个字段,该字段是有重大作用的,主要用于存储该控件的显示值。
本例子选的是模块作为数据源(其他数据源的操作大抵相同),需要在控件中显示多少字段,就配置多少字段(PS: 数据源配置中,字段key为key的字段是实际存入到到数据库中的值,caption的字段是控件实际上显示的值)。
我配置了三个字段,所以平台上的选择弹窗控件就会显示三个字段的数据。
PS:这里说明一下如何给Dialogwindow控件赋值。需要注意的是,给Dialogwindow控件赋值跟给其他控件赋值是不一样的,一定要注意,以免出现一些不必要的错误。
Dialogwindow控件在子表与主表的上赋值又有所不同,所以这里分开来讲。
① 主表
先讲主表的赋值。其他控件的主表赋值比较简单,使用 jwpf.setFormVal()
就行。比如说给设置为comboBox控件的xx字段赋值:
var val = "12"
jwpf.setFormVal("xx",val);
Dialogwindow控件的赋值就不能这么写了,需要这么赋值,举例说明一下:CRM案例的报价单模块中,我们选择客户名称后,需要动态给主表上的联系人(dialogwindow控件)字段赋值,怎么做呢?首先,通过 jwpf.getFilterData
(函数具体用法,请见函数的具体章节),获取到客户信息,然后通过获取到的信息给联系人字段赋值,具体代码如下:
Sql代码:
SELECT
a.WoFangGongSi,
a.FuKuanFangShi,
a.WaiXiaoBiZhong,
a.ShiFuKaiPiao,
a.KeHuBianHao,
a.ShuiHaoXinXi,
a.YunShuFangShi,
a.KaiPiaoDanWeiMingChen,
CONCAT(a.DiZhi, '-', a.DianHua) AS KaiPiaoDiZhi,
a.KaiHuYinXing,
a.YeWuYuan,
a.KeFu,
b.ID AS lxr,
b.XingMing,
b.ShouHuoDiZhi,
b.DianHua
FROM
KE_HU_XIN_XI_ZHU_BIAO a
LEFT JOIN KE_HU_XIN_XI_ZI_BIAO_1 b
ON
a.ID = b.MASTER_ID
AND b.MoRen = '1'
WHERE
a.ID = :kid
SQL生成规则如下:
JS代码如下:
if(newValue){
var data=jwpf.getFilterData("quotations.QuotationsZhuBiao.dinggoukehu.sql1",{"filter_EQL_kid":newValue});
if(data&&data.list&&data.list.length)
{
jwpf.setFormVal("dinggoulianxiren",{"key":data.list[0]['lxr'],"caption": data.list[0]['xingming'],"id":data.list[0]['lxr'],"text": data.list[0]['xingming']});
}
}
② 子表
Dialogwindow控件在子表上的赋值与其他控件也是不一样的,这里就不举例了,直接上代码:
var kh = jwpf.getFormVal("kehumingcheng");
var tableKey = "ShouKuanHeXiaoZiBiao2";
if (!kh) {
alert("请先选择客户");
return;
}
var onAfterSure = function (win) {
var rowData = win._getSelectFilterData_();
console.log(rowData)
if (rowData && rowData.length) {
var data = jwpf.getTableVal(tableKey,false);
var n = rowData.length;
var rowsData = []
for (var i = 0; i < n; i++) {
var row = rowData[i];
rowsData[i] = {
"daokuandanhao": row.danhao,
"shoukuanzhanghutext": row.shoukuanzhanghutext,
"shoukuanzhanghu": row.shoukuanzhanghu,
"shoukuanjine": row.shoukuanjine,
"shoukuanshijian": row.shoukuanshijian,
"danjuleixing": row.danjuleixing,
"beizhu": row.beizhu
}
var ifXt = jwpf.checkRowInRows(rowsData[i], data, ["daokuandanhao"]);
if (ifXt) {
alert("亲,单号为" + rowsData[i]["daokuandanhao"] + "的数据已经下推过了,请重新选择!");
return false;
}
}
jwpf.setTableData(tableKey, rowsData, true, false)
return true;
} else {
alert("亲,请选择订单");
return false;
}
};
var wfgs = jwpf.getFormVal("wofanggongsi");
var filterParam = { "fix_EQL_kh": kh, "fix_EQL_wfgs": wfgs };
var formParam = {
"title": "到款登记",
"formKey": "DaoKuanDengJiZhuBiao",
"filterParam": filterParam,
"isMaxWin": false,
"width": 1000,
"height": 500,
"onAfterSure": onAfterSure
};
openFormWin(formParam);