K3Cloud BOS设计 Python 插件 弹出列表并筛选
C#插件参照
下载
添加文本控件
添加一个 【文本】控件,属性中勾选 【显示编辑按钮】,输入【标识】、【字段名】、【绑定实体属性】
表单插件
- 点击【注册Python脚本/编辑Python脚本】
- 输入【脚本名称】
1.Python 插件脚本
1. 写窗体回调函数
def SetModel(results):
if results.ReturnData is None: # 验证 返回内容是否为空
return;
m = results.ReturnData[0]
row = m.DataRow # 获取选中行 前提是 单选,多选还未测试
this.View.Model.SetValue("FRECIPIENT_TEL", row["FMOBILE"]); # row[""] 是取选中行中的字段值
this.View.Model.SetValue("FReveiceName", m.Name); # m.Name 直接取官方字段属性
2. 封装弹出窗体函数
def Show_FrmList(form_id, filter_str):
showParam = ListShowParameter(); # 打开列表
showParam.Context = this.Context;
showParam.FormId = form_id; # 填写需要打开窗体的唯一标识
showParam.IsShowApproved = True; # 只显示已审核单据
showParam.IsLookUp = True;
showParam.MultiSelect = False; # 单选
showParam.PermissionItemId = PermissionConst.View;
showParam.OpenStyle.ShowType = ShowType.Modal;
showParam.PageId = Guid.NewGuid().ToString();
showParam.ParentPageId = this.View.PageId; # 当前窗体的Id
if filter_str != '': # 判断筛选脚本是否为空,为空就跳过
showParam.ListFilterParameter.Filter = filter_str;
this.View.ShowForm(showParam, lambda x: SetModel(x)); # 打开窗体,并用lambda调用回调函数
3. 重写BeforeF7Select
def BeforeF7Select(e): # 重写事件
if e.FieldKey.lower() == "freveicename": # 判断
cusid = this.View.Model.DataObject["FCustomerID_Id"];
if cusid != 0: # 判断父级是否选择,是 执行下一步
filter_str = " FCustId = '%s'" % cusid; # 拼写筛选脚本
Show_FrmList("BD_CustContact", filter_str); # 调用 弹出窗体函数(封装后的)
else: # 否 弹出提示框
this.View.ShowMessage('请先选择开票客户或者选择合同号!', MessageBoxOptions.OK);