二开案例.嵌套网页交互.金蝶云星空系统与嵌套网页进行交互实现的DEMO

偶然间扫到个帖子金蝶云星空系统与嵌套网页进行交互实现详解:https://vip.kingdee.com/article/182254,觉得有点意思,但是里面只讲了怎么做,没有实际的案例,效果并不明显,特此写个简单的DEMO分享一下。
1、应用场景:
嵌套网页与金蝶云星空进行数据交互,例如:打开嵌套网页时,传递金蝶云星空的数据给嵌套网页,嵌套网页接收插件传递过来的数据,打开嵌套网页后在嵌套网页中点击一个按钮,再把嵌套网页的数据发送到金蝶云星空系统当中,并且星空系统接收发过来的数据,同时会触发表单插件事件。
2、案例演示:
本案例将演示动态表单嵌套网页,动态表单传递参数到网页内进行展示,网页修改完参数后点击按钮返回给动态表单并弹出消息提示,下面是实现后的效果:
2.1、打开动态表单后,动态表单插件内将参数传递给嵌套网页,嵌套网页对参数进行展示:

2.2、嵌套网页修改参数值,点击按钮,将参数值返回给动态表单,动态表单插件获取值并弹出消息提示:

3、实现步骤:
3.1、BOS设计器创建动态表单,分别拖两个面板控件并设置充满,最里面的面板控件标识此处命名为FPanelWebBrowse:


3.2、编写表单构建插件,修改面板控件的xtype属性:
using System.ComponentModel;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Util;
namespace Running.Sample.PlugIn.BusinessPlugIn.Builder
{
[Description("嵌套网页的表单构建插件"), HotUpdate]
public class P20201205WebBrowseBuilder : AbstractDynamicWebFormBuilderPlugIn
{
public override void CreateControl(CreateControlEventArgs e)
{
//动态表单上面板控件的标识,修改xtype属性。
if (e.ControlAppearance.Key.EqualsIgnoreCase("FPanelWebBrowse"))
{
e.Control["xtype"] = "kdwebbrowser";
}
}
}
}
3.3、编译表单构建插件,并注册到动态表单上的表单构建插件属性:

3.4、编写动态表单插件,设置需要展示的嵌套网页的地址及接收网页传参的相关逻辑:
using System;
using System.ComponentModel;
using System.Web;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.JSON;
using Kingdee.BOS.ServiceHelper.FileServer;
using Kingdee.BOS.Util;
using Kingdee.BOS;
namespace Running.Sample.PlugIn.BusinessPlugIn.DynamicForm
{
[Description("嵌套网页的动态表单插件"), HotUpdate]
public class P20201205WebBrowseEdit : AbstractDynamicFormPlugIn
{
public override void AfterBindData(EventArgs e)
{
string webSiteUrl = FileServerHelper.GetAppSiteOuterNetUrl(this.Context,
HttpContext.Current.Request);
string sourceUrl = string.Format(@"{0}html5/TestWebBrowse.html?pageid={1}&content={2}",
webSiteUrl, this.View.PageId, HttpUtility.UrlEncode("这是动态表单传递的参数!"));
//拿到面板控件,设置需要展示的嵌套网页地址,参数通过url传参。
Control webBrowse = this.View.GetControl("FPanelWebBrowse");
webBrowse.SetCustomPropertyValue("Source", sourceUrl);
webBrowse.SetCustomPropertyValue("IsSetBrowseVisible", true);
webBrowse.SetCustomPropertyValue("Allowfullscreen", true);
//兼容GUI。
if (this.View.Context.ClientType != ClientType.Silverlight
&& this.View.Context.ClientType != ClientType.Html)
{
webBrowse.InvokeControlMethod("StartTime", 1);
}
this.View.AddAction("notShowMainFormHolder", true);
}
public override void CustomEvents(CustomEventsArgs e)
{
//判断是嵌套网页发起的自定义事件,才执行相关逻辑。
if (e.EventName.EqualsIgnoreCase("$$MessageCustomerEvent"))
{
//拿到嵌套网页传递过来的JSON数据。
JSONObject data = JSONObject.Parse(e.EventArgs);
string content = data.GetValue("content", string.Empty);
this.View.ShowMessage(content);
//消息提示完隐藏WebBrowse,兼容WPF。
Control webBrowse = this.View.GetControl("FPanelWebBrowse");
webBrowse.SetCustomPropertyValue("IsBrowserVisible", false);
}
}
}
}
3.5、编译动态表单插件,并注册到动态表单上的表单插件属性:

3.6、编写嵌套网页,并部署到应用服务器站点目录下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<meta charset="utf-8" />
<title></title>
<script src="script/thirdpart/jquery/jquery.min.js"></script>
<script>
(function () {
var formatOrigin = (function () {
var reg = /^([\w]+?:\/\/.*?(?=\/|$))/i;
return function (origin) {
origin = origin || '';
if (reg.test(origin)) {
return RegExp.$1;
}
return '*';
};
})();
二开案例.嵌套网页交互.金蝶云星空系统与嵌套网页进行交互实现的DEMO
偶然间扫到个帖子金蝶云星空系统与嵌套网页进行交互实现详解:https://vip.kingdee.com/article/182254,觉得有点意思,但是里面只讲了...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



