C#表单插件F7Select事件,实现界面交互

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:2

C#表单插件F7Select事件,实现界面交互

1,案例以,f7打开一个列表获取选中行数据填充到当前字段

image.webp


image.webp


2,返回数据或者列表双击,获取名称填充到当前字段

image.webp


代码实现如下:

 

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(); // 表单插件用这个方法


C#表单插件F7Select事件,实现界面交互

1,案例以,f7打开一个列表获取选中行数据填充到当前字段2,返回数据或者列表双击,获取名称填充到当前字段代码实现如下: public override...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息