背景介绍:
K/3 Cloud 支持了链接控件,在用户点击此链接时,打开Web页面。
正常情况下,可以直接设置链接控件的"URL"属性,确定链接指向的Web页面地址,不需要插件开发。
如果事先并不能确定URL地址,而是需要在运行时,根据情况自动生成。此时需要进行插件开发。
本帖主要介绍如何通过插件,在用户点击链接时,动态生成URL地址并打开。
案例说明:
在界面上添加三个链接控件,前两个都需要通过插件响应点击事件,动态生成URL地址并打开。
第三个链接控件,则直接设置URL地址,不写插件。
图一:界面上添加三个链接控件
图二:第三个链接控件,指定好URL地址
图三:运行效果,用户点击第一个链接控件
图四:运行效果,用户点击第二、第三个控件
示例代码:
演示如何响应第一、第二个链接控件的点击事件,生成URL地址并打开。
//************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
namespace JDSample.FormPlugIn.DynamicForm
{
///
/// 响应链接控件点击事件,显示URL地址
///
///
/// 案例说明:
/// 界面上添加两个链接按钮;
/// 用户点击链接按钮后,由插件控制,动态生成一个URL地址,并打开
///
[Description("响应链接控件点击事件,显示URL地址")]
public class S150925LinkURLEdit : AbstractDynamicFormPlugIn
{
///
/// 链接按钮点击事件
///
///
public override void ButtonClick(ButtonClickEventArgs e)
{
if (e.Key.EqualsIgnoreCase("F_JD_OpenURLWindow"))
{
this.OpenURLWindow();
e.Cancel = true;
}
else if (e.Key.EqualsIgnoreCase("F_JD_ShowKDWebBrowseForm"))
{
this.ShowKDWebBrowseForm();
e.Cancel = true;
}
}
///
/// 打开一个窗口,窗口中包含一个链接:用户点击此链接打开URL地址
///
private void OpenURLWindow()
{
Kingdee.BOS.JSON.JSONArray jSONArray = new Kingdee.BOS.JSON.JSONArray();
Kingdee.BOS.JSON.JSONObject jSONObject = new Kingdee.BOS.JSON.JSONObject();
string url = @"http://www.kingdee.com";
jSONObject.Put("url", System.Web.HttpUtility.UrlEncode(url)); // 需引用System.Web.dll
jSONObject.Put("title", "在线学习");
jSONArray.Add(jSONObject);
// 要求前端,调用openUrlWindow方法,显示一个小窗口,窗口中包含一个Url链接
this.View.AddAction("openUrlWindow", jSONArray);
}
///
/// 打开一个窗口,在此窗口直接打开URL地址
///
private void ShowKDWebBrowseForm()
{
Kingdee.BOS.JSON.JSONObject webobj = new Kingdee.BOS.JSON.JSONObject();
webobj["source"] = @"http://www.kingdee.com";
webobj["height"] = 545;
webobj["width"] = 810;
webobj["isweb"] = true; //是否新弹出一个浏览器窗口(or选项卡)打开网页地址
webobj["title"] = "金蝶官网";
// 要求前端,调用ShowKDWebbrowseForm方法,显示指定的网页
this.View.AddAction("ShowKDWebbrowseForm", webobj);
this.View.SendDynamicFormAction(this.View);
}
}
}