zoukankan      html  css  js  c++  java
  • k3 cloud点击按钮单开单据

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Kingdee.BOS;
    using Kingdee.BOS.Core.Bill.PlugIn;
    using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
    using Kingdee.BOS.Orm.DataEntity;
    using Kingdee.BOS.Core.SqlBuilder;
    using Kingdee.BOS.Core.Metadata;
    using System.ComponentModel;
    using Kingdee.BOS.Core.Bill;

    namespace Quantities.BusinessPlugIn
    {
    [Description("工程量变更申请单和工程量调整单、直接成本调整单关联")]
    public class AplyFor : AbstractBillPlugIn
    {

    /// <summary>
    /// 初始化,对其他界面传来的参数进行处理,对控件某些属性进行处理
    /// 这里不宜对数据DataModel进行处理
    /// </summary>
    /// <param name="e"></param>
    public override void OnInitialize(InitializeEventArgs e)
    {

    }

    /// <summary>
    /// 新建单据加载数据完成之后,需要处理的功能
    /// </summary>
    /// <param name="e"></param>
    public override void AfterCreateNewData(EventArgs e)
    {

    }

    /// <summary>
    /// 修改,查看单据加载已有数据之后,需要处理的功能
    /// </summary>
    /// <param name="e"></param>
    public override void AfterLoadData(EventArgs e)
    {

    //获取工程量变更申请单单据内码
    long billFid = Convert.ToInt64(this.View.Model.GetPKValue());
    //获取工程量变更申请单单据编号
    string fbillno = Convert.ToString(this.View.Model.GetValue("FBILLNO"));
    //GetQueryDatas()获取直接成本调整单的变更申请单号和单据编码
    //获取单变更申请单等于当前单据编码的单据编码
    var adjustNo11 = GetQueryDatas().Where(s => Convert.ToString(s["FBGSQDH"]) == fbillno);
    try
    {
    string adjustNo = GetQueryDatas().Where(s => Convert.ToString(s["FBGSQDH"]) == fbillno).Select(s => s["FBILLNO"]).FirstOrDefault().ToString(); //.Select(s =>s["FBILLNO"]).FirstOrDefault().ToString();
    //获取工程量调整单对应的内码

    this.View.Model.SetValue("F_PAEZ_Text1", adjustNo);
    }
    catch
    {

    }
    try
    {

    string directNo = GetQueryCost().Where(s => Convert.ToString(s["FCOSTNO1"]) == fbillno).Select(s => s["FBILLNO"]).FirstOrDefault().ToString();

    this.View.Model.SetValue("F_PAEZ_Text", directNo);
    }
    catch
    {

    }


    //自动保存:非表单插件用
    //BusinessDataServiceHelper.Save()

    //调用自动保存:表单插件用
    this.View.InvokeFormOperation("save");

    }


    /// <summary>
    /// queryservice取数方案,通过业务对象来获取数据,推荐使用
    /// </summary>
    /// <returns></returns>
    public DynamicObjectCollection GetQueryDatas()
    {
    QueryBuilderParemeter paramCatalog = new QueryBuilderParemeter()
    {
    FormId = "PAEZ_YNCS_GCBGSQD",//取数的业务对象:工程量调整单
    FilterClauseWihtKey = "",//过滤条件,通过业务对象的字段Key拼装过滤条件
    //FBGSQDH:变更申请单号
    SelectItems = SelectorItemInfo.CreateItems("FBILLNO", "FBGSQDH", "FID"),//要筛选的字段【业务对象的字段Key】,可以多个,如果要取主键,使用主键名
    };

    DynamicObjectCollection dyDatas = Kingdee.BOS.ServiceHelper.QueryServiceHelper.GetDynamicObjectCollection(this.Context, paramCatalog);
    return dyDatas;
    }

    public DynamicObjectCollection GetQueryCost()
    {
    QueryBuilderParemeter paramCatalog = new QueryBuilderParemeter()
    {
    FormId = "PAEZ_YNCS_DirectCostAdjust",//取数的业务对象:直接成本调整单
    FilterClauseWihtKey = "",//过滤条件,通过业务对象的字段Key拼装过滤条件
    //FCOSTNO:直接成本调整单单号
    SelectItems = SelectorItemInfo.CreateItems("FBILLNO", "FCOSTNO1", "FID"),//要筛选的字段【业务对象的字段Key】,可以多个,如果要取主键,使用主键名
    };

    DynamicObjectCollection dyDatas = Kingdee.BOS.ServiceHelper.QueryServiceHelper.GetDynamicObjectCollection(this.Context, paramCatalog);
    return dyDatas;
    }

    public override void ButtonClick(ButtonClickEventArgs e)
    {
    base.ButtonClick(e);
    string fbillno = Convert.ToString(this.View.Model.GetValue("FBILLNO"));
    //工程量调整单对应的内码
    long adjustId = Convert.ToInt64(GetQueryDatas().Where(s => Convert.ToString(s["FBGSQDH"]) == fbillno).Select(s => s["FID"]).FirstOrDefault()); //.Select(s =>s["FBILLNO"]).FirstOrDefault().ToString();
    long directId = Convert.ToInt64(GetQueryCost().Where(s => Convert.ToString(s["FCOSTNO1"]) == fbillno).Select(s => s["FID"]).FirstOrDefault());
    switch (e.Key.ToUpperInvariant())
    {
    //case "SAVE": 表单定义的事件都可以在这里执行,需要通过事件的代码[大写]区分不同事件
    //break;
    case "F_PAEZ_BUTTON":
    BillShowParameter parameter = new BillShowParameter();
    parameter.Status = OperationStatus.EDIT;
    parameter.FormId = "PAEZ_YNCS_DirectCostAdjust";//直接成本调整单
    parameter.PKey = directId.ToString();
    parameter.OpenStyle.ShowType = Kingdee.BOS.Core.DynamicForm.ShowType.MainNewTabPage;//打开方式,到主界面一个新的页签
    //param.ParentPageId = this.View.PageId;//指定ParentPageId,可以实现打开的界面直接拿到父界面的数据 如this.View.ParentFormView.Model.DataObject
    this.View.ShowForm(parameter);
    break;
    case "F_PAEZ_BUTTONADJUST":
    BillShowParameter param = new BillShowParameter();
    param.Status = OperationStatus.EDIT;
    param.FormId = "PAEZ_YNCS_GCBGSQD";//工程量调整单
    param.PKey = adjustId.ToString();
    param.OpenStyle.ShowType = Kingdee.BOS.Core.DynamicForm.ShowType.MainNewTabPage;//打开方式,到主界面一个新的页签
    //param.ParentPageId = this.View.PageId;//指定ParentPageId,可以实现打开的界面直接拿到父界面的数据 如this.View.ParentFormView.Model.DataObject
    this.View.ShowForm(param);
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 数据加载之后,需要处理的功能,这里主要对界面样式进行处理,尽量不要对Datamodel进行处理
    /// </summary>
    /// <param name="e"></param>
    public override void AfterBindData(EventArgs e)
    {

    }

    /// <summary>
    /// 在根据编码检索数据之前调用;
    /// 通过重载本事件,可以设置必要的过滤条件,以限定检索范围;
    /// 还可以控制当前过滤是否启用组织隔离,数据状态隔离
    /// </summary>
    /// <param name="e"></param>
    public override void BeforeSetItemValueByNumber(BeforeSetItemValueByNumberArgs e)
    {
    switch (e.BaseDataField.Key.ToUpperInvariant())
    {
    //case "FXXX":通过字段的Key[大写]来区分不同的基础资料
    //e.Filter = "FXXX= AND fxxy=";过滤的字段使用对应基础资料的字段的Key,支持ksql语法
    //break;
    case "":
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 显示基础资料列表之前调用
    /// 通过重载本事件,可以设置必要的过滤条件,以限定检索范围;
    /// </summary>
    /// <param name="e"></param>
    public override void BeforeF7Select(BeforeF7SelectEventArgs e)
    {
    switch (e.FieldKey.ToUpperInvariant())
    {
    //case "FXXX":通过字段的Key[大写]来区分不同的基础资料
    // e.ListFilterParameter.Filter = "FXXX= AND fxxy=";过滤的字段使用对应基础资料的字段的Key,支持ksql语法
    //break;
    case "":
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 界面数据发生变化之前,需要处理的功能
    /// </summary>
    /// <param name="e"></param>
    public override void BeforeUpdateValue(BeforeUpdateValueEventArgs e)
    {
    switch (e.Key.ToUpperInvariant())
    {
    //case "FXXX":通过字段的Key[大写]来区分不同的控件的数据变化功能,如果要阻止该次变化,可以用e.Cancel = true;
    // e.Cancel = true;
    // break;
    case "":
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 界面数据发生变化之后,需要处理的功能
    /// </summary>
    /// <param name="e"></param>
    public override void DataChanged(DataChangedEventArgs e)
    {
    switch (e.Field.Key.ToUpperInvariant())
    {
    case "":
    break;
    default:
    break;
    }
    }

    /// <summary>
    /// 单据持有事件发生前需要完成的功能
    /// </summary>
    /// <param name="e"></param>
    public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
    {
    switch (e.Operation.FormOperation.Operation.ToUpperInvariant())
    {
    //case "SAVE": 表单定义的事件都可以在这里执行,需要通过事件的代码[大写]区分不同事件
    //break;
    case "":
    break;
    default:
    break;
    }


    }

    /// <summary>
    /// 单据持有事件发生后需要完成的功能
    /// </summary>
    /// <param name="e"></param>
    public override void AfterDoOperation(AfterDoOperationEventArgs e)
    {
    switch (e.Operation.Operation.ToUpperInvariant())
    {
    //case "SAVE": 表单定义的事件都可以在这里执行,需要通过事件的代码[大写]区分不同事件
    //break;
    case "":
    break;
    default:
    break;
    }
    }


    }

    }

    //通过插件实现,在插件中捕获按钮点击事件,事件中通过代码打开一个单据,参考如下写法:
    //BillShowParameter parameter = new BillShowParameter();
    //parameter.Status=OperationStatus.EDIT;
    //parameter.FormId="你要打开单据的ID";

    //this.View.ShowFrom(parameter);


    //移动BOS开发技巧 -- 如何打开一个设计好的移动表单或者单据
    //在K/3 Cloud的移动BOS,我们可以看到在设计器中我们区分为移动表单核移动单据
    //下面我们就来看一下, 我们如何用代码打开他们, 我们以一个简单的场景为例:
    // 我们在当前页面的一个按钮点击的时候,打开另外一个页面(移动表单和移动单据列表)
    // 以下是打开移动表单的写法,如果要打开移动单据列表,只需要把 MobileShowParameter 换成 MobileListShowParameter即可
    // MobileShowParameter param = new MobileShowParameter(); param.FormId = "你想打开的formid";
    // //也可以添加自定义的参数
    // param.CustomParams.Add("key名", “value”);
    // //如果需要支持回调参考以下写法
    // param.SyncCallBackAction = false;
    // this.View.ShowForm(param, new Action<FormResult>((res) => {
    // this.View.Refresh(); //刷新当前页面
    // }));


    //打开一个新增页面:网址https://www.cnblogs.com/zfangfang/p/9983109.html
    //BillShowParameter parameter = new BillShowParameter();
    ////parameter.Status = OperationStatus.EDIT;
    //parameter.FormId = "PAEZ_YNCS_DirectCostAdjust";
    // parameter.OpenStyle.ShowType = Kingdee.BOS.Core.DynamicForm.ShowType.MainNewTabPage;//打开方式,到主界面一个新的页签
    // //param.ParentPageId = this.View.PageId;//指定ParentPageId,可以实现打开的界面直接拿到父界面的数据 如this.View.ParentFormView.Model.DataObject
    // this.View.ShowForm(parameter);


    //K3/Cloud 用插件打开一张已存在的单据
    //BillShowParameter billpara = new BillShowParameter();
    //billpara.FormId = "SAL_SaleOrder";//单据唯一标识
    ////修改状态打开
    //billpara.Status = OperationStatus.EDIT;
    ////打开已有的单据的内码
    //billpara.PKey = "100003";
    //this.View.ShowForm(billpara);

  • 相关阅读:
    SQL查询语句中,any和all有什么区别?
    $(function(){...});
    在ASP.NET中TextBox和TextBoxFor的区别以及ValidationMessageFor的作用以及EditorFor等的作用和用法什么?
    Brt课程设计day3
    Brt课程设计day2
    day1
    .net 高级写法总结
    可能是目前最完整的前端框架 Vue.js 全面介绍
    redis live 如何安装
    百万级PHP网站架构工具箱
  • 原文地址:https://www.cnblogs.com/woshinige/p/14211479.html
Copyright © 2011-2022 走看看