文本主要介绍了在软件或应用程序中,通过不同参数化方法打开表单、列表、账表等界面,并在这些界面间进行数据交互的代码实现。具体包括: 1. **F7功能实现**:通过`BeforeF7Select`方法,在用户触发F7键时,弹出一个列表界面(如销售订单列表),根据选中行填充当前字段(如客户名称)。代码通过配置`ListShowParameter`对象实现列表的显示和筛选,并处理选中项数据填充到指定字段。 2. **动态表单交互**:使用`DynamicFormShowParameter`对象打开动态表单,通过传递参数(如`F_TAIC_str`)给子页面,并在子页面关闭时获取数据返回给父页面。`AfterCreateNewData`和`AfterButtonClick`方法分别用于处理父页面接收数据和子页面发送数据。 3. **单据打开**:通过`BillShowParameter`对象打开单据编辑界面,设置单据ID、操作状态等参数。 4. **账表显示**:使用`SysReportShowParameter`对象打开账表,包括源单表单插件和直接SQL账表显示参数的设置,支持在账表中传递参数(如`FSelectId`)并控制显示方式(如在新标签页中打开)。 整体上,文本展示了在软件界面设计中,如何通过参数化配置和事件处理实现复杂的界面交互和数据传递。
1,案例以,f7打开一个列表获取选中行数据填充到当前字段
2,返回数据或者列表双击,获取名称填充到当前字段
代码实现如下:
public override void BeforeF7Select(BeforeF7SelectEventArgs e) { base.BeforeF7Select(e); string key = e.FieldKey.ToUpper(); if (key.Equals("F_TAIC_NAME")) { int row = e.Row; ListShowParameter listShowParameter = new ListShowParameter(); //FormId你要调用那个单据的列表,通过打开未扩展的销售订单,找到唯一标识 listShowParameter.FormId = "TAIC_qlkj_Customer"; //IsLookUp弹出的列表界面是否有“返回数据”按钮 listShowParameter.IsLookUp = true; //只显示基本信息 listShowParameter.ListType = Convert.ToInt32(BOSEnums.Enu_ListType.BaseList); //全部显示,默认全部显示 listShowParameter.ListType = Convert.ToInt32(BOSEnums.Enu_ListType.List); //过滤已审核数据 listShowParameter.ListFilterParameter.Filter = listShowParameter.ListFilterParameter.Filter.JoinFilterString(" F_TAIC_customertype ='A' and FDocumentStatus='C'"); //是否显示复选框。默认是true,如果false就是不显示 listShowParameter.MultiSelect = false; this.View.ShowForm(listShowParameter, delegate (FormResult results) { ListSelectedRowCollection data = results.ReturnData as ListSelectedRowCollection; if (data != null) { this.View.Model.SetValue("F_TAIC_name", Convert.ToString(data[0].Name)); this.View.UpdateView("F_TAIC_name",0); } }); } }
一,这里界面交互弹出一个单据界面写法相同,
1,DynamicFormShowParameter:打开动态表单
DynamicFormShowParameter formPa = new DynamicFormShowParameter();//创建动态表单 formPa.Resizable = false; formPa.OpenStyle.ShowType = ShowType.Modal; //把数据传给子页面 dynamicFormShowParameter.CustomComplexParams.Add("F_TAIC_str",this.View.Model.GetValue("F_TAIC_str", 0) + ""); formPa.FormId = "TAIC_wbbjq";//动态表单FormId //formPa.Height = 400;//设置弹出窗口的高度 //formPa.Width = 2000;//设置弹出窗口的宽度 this.View.ShowForm(formPa, data => { if (data != null && data.ReturnData != null) { DynamicObject obj = data.ReturnData as DynamicObject; } });
如果是打开子界面,点击确认回传数据给父界面拿到对应数据results解析,在子界面点击确认时返回数据,或者拿到父界面传过来的值填充当前界面
public override void AfterCreateNewData(EventArgs e) { base.AfterCreateNewData(e); //获取主页面弹出动态表单时传过来的数据 string Data = this.View.OpenParameter.GetCustomParameter("F_TAIC_str").ToString(); this.View.Model.SetValue("F_TAIC_DynamicText", Data, 0); } public override void AfterButtonClick(AfterButtonClickEventArgs e) { base.AfterButtonClick(e); if (e.Key.ToUpper() == "F_QLKJ_BUTTON") { DynamicObject data = this.View.Model.DataObject; //把数据返回给主界面 this.View.ReturnToParentWindow(new FormResult(data)); this.View.Close();//关闭弹出来的窗口 } }
2,BillShowParameter:打开单据
BillShowParameter showPara1 = new BillShowParameter() { FormId = "CB_EXPENSECOLLECTION", Status = OperationStatus.EDIT, PageId = Guid.NewGuid().ToString(), OpenStyle = { ShowType = ShowType.MainNewTabPage }, }; showPara1.PKey = fid;//单据对应Fid this.View.ShowForm(showPara1);
3,SysReportShowParameter :打开账表
1.源单表单插件:
var showParam = new SysReportShowParameter(); showParam.FormId = "CB_CostCalcSummary"; showParam.ParentPageId = this.View.PageId; showParam.CustomComplexParams["FSelectId"] = fid;//要传递的参数 showParam.OpenStyle.ShowType = ShowType.MainNewTabPage; this.View.ShowForm(showParam); //直接sql帐表显示参数 SysReportShowParameter sqlParameter = new SysReportShowParameter(); sqlParameter.FormId = "kaa03adeaa7704e1a99b136df0a1df82a"; //这个没有用,直接sql帐表不会自动加上,只要在列表过滤中有用 // sqlParameter.ReportFilterParameter.Filter = columnValue; //sqlParameter.ParentPageId = this.View.PageId; sqlParameter.CustomParams.Add("F_CKID", F_CKID); sqlParameter.CustomParams.Add("F_UBVN_KSRQ", F_UBVN_KSRQ); sqlParameter.CustomParams.Add("F_UBVN_JSRQ", F_UBVN_JSRQ); sqlParameter.CustomParams.Add("F_CPID", F_CPID); sqlParameter.OpenStyle.ShowType = ShowType.Modal; this.View.ShowForm(sqlParameter);
2.目标账表表单插件:
public override void OnInitialize(InitializeEventArgs e) { //接收源单传递的参数"FSelectId" string Fid = this.View.ParentFormView.OpenParameter.GetCustomParameter("FSelectId").ToString(); this.SysReportModel.RptParams.CustomParams["Fid"] = Fid; } //创建临时报表 public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { #region 从汇总表双击打开账表处理数据 //得到传入的创建时间过滤条件 object openObj; var CK = ""; var kssj = ""; var jssj = ""; string cktj = ""; string cpid = ""; string cpidtj = ""; if (filter.CustomParams.TryGetValue("OpenParameter", out openObj)) { var openParam = (Dictionary<string, object>)openObj; object F_CKID; openParam.TryGetValue("F_CKID", out F_CKID); CK = ObjectUtils.Object2String(F_CKID); object F_UBVN_KSRQ; openParam.TryGetValue("F_UBVN_KSRQ", out F_UBVN_KSRQ); kssj = ObjectUtils.Object2String(F_UBVN_KSRQ); object F_UBVN_JSRQ; openParam.TryGetValue("F_UBVN_JSRQ", out F_UBVN_JSRQ); jssj = ObjectUtils.Object2String(F_UBVN_JSRQ); object F_CPID; openParam.TryGetValue("F_CPID", out F_CPID); cpid = ObjectUtils.Object2String(F_CPID); } if (!string.IsNullOrWhiteSpace(kssj)) { ksrq = kssj; } if (!string.IsNullOrWhiteSpace(jssj)) { jsrq = jssj; } if (!string.IsNullOrWhiteSpace(CK)) { cktj = string.Format("and F_CKID='{0}'", CK); } if (!string.IsNullOrWhiteSpace(cpid)) { cpidtj= string.Format("and F_CPID='{0}'", cpid); } #endregion }
4、表单点击放大镜F7事件给基础资料添加过滤条件
public override void BeforeF7Select(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeF7SelectEventArgs e) { base.BeforeF7Select(e); if (e.FieldKey.Equals("F_TAIC_xm")) { e.ListFilterParameter.Filter = String.Format(@" FName ='{0}'", this.Context.UserName); } }
二、获取种子值
//var seqValue = new SequenceReader(this.Context).GetSequence(tableName, 1).FirstOrDefault();// 服务插件用这个方法 var seqValue = DBServiceHelper.GetSequenceInt32(this.Context, tableName, 1).FirstOrDefault(); // 表单插件用这个方法
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *