本帖旨在通过代码演示如何在BOS IDE中通过按钮点击事件打开不同类型的单据、列表、动态表单、简单帐表及直接SQL帐表。代码展示了如何根据不同的按钮点击(通过按钮键名的后缀判断)构造不同模型的参数并调用展示界面。同时指出直接SQL帐表基对象不能直接使用,演示了其在无特定SQL帐表继承情况下的报错效果。
论坛里不时会有小伙伴问到,
通过代码如何打开一张单据,
通过代码如何打开一张单据列表……等等需求。
写本帖子目的,
把代码调用打开单据(打开基础资料)、打开列表、打开动态表单、打开简单帐表,打开直接SQL帐表进行整理。
本代码演示了按钮的点击事件,及不同的模型打开方式的参数构造。
不多说了,上图调用图:
BOS IDE中配置了个界面,拖了动态表单界面,加了5个测试按钮。
直接看效果:
点击“打开单据”维护界面,
会跳转到一个新的主界面页签,【物料】新增
点击“打开列表”,会弹出【物料】列表界面,
点击“打开动态表单”,会弹出动态表单,
这个打开动态表单界面是空的,一般动态表单都是要压入自定义参数值进去,或者从父界面获取需要的值。
点击“打开简单帐表”,会弹出简单帐表,
点击“打开直接SQL帐表”,会弹出直接SQL帐表,
可以看到报错了,因为这个是所有【直接Sql帐表】的基对象,是不能直接使用的,我们开发的直接SQL帐表都是继承这个的,演示帐套里默认没有其他的直接SQL帐表,也就拿这个测试看下效果了。
附上代码:
[code]using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace ClassLibrary60.Business.PlugIn
{
[Description("模型打开测试")]
public class CustDynamicFormPlugIn : AbstractDynamicFormPlugIn
{
public override void ButtonClick(ButtonClickEventArgs e)
{
base.ButtonClick(e);
if (e.Key.EndsWith("Bill", StringComparison.OrdinalIgnoreCase))
{
Kingdee.BOS.Core.Bill.BillShowParameter param = new Kingdee.BOS.Core.Bill.BillShowParameter();
param.FormId = "BD_MATERIAL";//【物料】基础资料 业务对象标识,此处基础资料、单据类型都可以
param.OpenStyle.ShowType = Kingdee.BOS.Core.DynamicForm.ShowType.MainNewTabPage;//打开方式,到主界面一个新的页签
param.ParentPageId = this.View.PageId;//指定ParentPageId,可以实现打开的界面直接拿到父界面的数据 如this.View.ParentFormView.Model.DataObject
this.View.ShowForm(param);
}
else if (e.Key.EndsWith("List", StringComparison.OrdinalIgnoreCase))
{
Kingdee.BOS.Core.List.ListShowParameter param = new Kingdee.BOS.Core.List.ListShowParameter();
param.FormId = "BD_MATERIAL";// 【物料】基础资料 业务对象标识,此处基础资料、单据类型都可以
this.View.ShowForm(param);
}
else if (e.Key.EndsWith("DynamicForm", StringComparison.OrdinalIgnoreCase))
{
Kingdee.BOS.Core.DynamicForm.DynamicFormShowParameter param = new Kingdee.BOS.Core.DynamicForm.DynamicFormShowParameter();
param.FormId = "BD_QUERYAUXMATERIAL";//【查询辅助属性启用的物料】动态表单 业务对象标识,此处动态表单、基础资料、单据类型的都可以
this.View.ShowForm(param);
}
else if (e.Key.EndsWith("SysReport", StringComparison.OrdinalIgnoreCase))
{
Kingdee.BOS.Core.Report.SysReportShowParameter param = new Kingdee.BOS.Core.Report.SysReportShowParameter();
param.FormId = "GL_RPT_GeneralLedger";//简单账表 总分类账 此处简单账表、树形账表、分页账表、透视表类型的该都是可以的
this.View.ShowForm(param);
}
else if (e.Key.EndsWith("SQLReport", StringComparison.OrdinalIgnoreCase))
{
Kingdee.BOS.Core.Report.SQLReportShowParameter param = new Kingdee.BOS.Core.Report.SQLReportShowParameter();
param.FormId = "BOS_SQLReport";
this.View.ShowForm(param);
}
}
}
}
[/code]
至于每种类型的不同打开参数控制,可自行赋下值分析研究下。