Camstar Portal 弹出层的使用:父子页面值传递

news/2024/12/28 11:07:10/文章来源:https://www.cnblogs.com/coderlucas/p/18637271

效果如下

在Onload方法注册事件

protected override void OnLoad(EventArgs e)
{try{base.OnLoad(e);SearchBtn.Click += new EventHandler(SearchBtn_Click);TranslateDetails.RowSelected += new JQGridEventHandler(TranslateDetails_SelectChanged);if (SEMI.AppCode.UIUtility.IsPopupClose(this)){// 弹出层关闭的监听事件OnPopupClose();}if (!Page.IsPostBack){// 实例化参数AddDataTranslateLabelMember();EditBtn.Visible = false;if (TranslateDetails != null){GetTranslateDetailsList();}}}catch (Exception ex){Page.StatusBar.WriteError(ex.Message.ToString());}
}

实例化需要传递的参数(父子VP的控件值联动回显)

private void AddDataTranslateLabelMember()
{int intConfiguredDataMemberCount = 0;if (Page.DataContract != null){if (Page.DataContract.DataMembers != null)intConfiguredDataMemberCount = Page.DataContract.DataMembers.Length;}elsePage.DataContract = new UIComponentDataContract();// manually add the dataContractMember since the custom control's property does not show up at design timeUIComponentDataMember[] objPageDataMembers = new UIComponentDataMember[intConfiguredDataMemberCount + 1];int intDMIndex = 0;if (Page.DataContract.DataMembers != null){foreach (UIComponentDataMember objDM in Page.DataContract.DataMembers){objPageDataMembers[intDMIndex] = new UIComponentDataMember();objPageDataMembers[intDMIndex] = objDM;intDMIndex++;}}// 实例化参数objPageDataMembers[intDMIndex] = new UIComponentDataMember();// VP上绑定的控件的Name,BlankWP_是Webpart的NameobjPageDataMembers[intDMIndex].Key = "BlankWP_.ReturnValue";// 自定义的参数名称objPageDataMembers[intDMIndex].Name = "ReturnVallueText";objPageDataMembers[intDMIndex].ConnectionType = DataMemberConnectionType.Control;objPageDataMembers[intDMIndex].Property = "Data";Page.DataContract.DataMembers = objPageDataMembers;
} 

按钮事件的注册

public override void WebPartCustomAction(object sender, Personalization.CustomActionEventArgs e)
{base.WebPartCustomAction(sender, e);var action = e.Action as CustomAction;if (action != null){switch (action.Parameters){case "TranslateEditPopup":{// 点击按钮执行的方法TranslateEditPopup();break;}}}
}

弹出按钮的逻辑

public virtual void TranslateEditPopup(bool EndResponse = false)
{try{Camstar.WebPortal.Personalization.FloatPageOpenAction objAction = new FloatPageOpenAction();// 传值Page.PortalContext.DataContract.SetValueByName("LabelId", GetSelectedTranslateInfo());// 弹出VP的名称objAction.PageName = "TranslateEditPopupVP";objAction.FrameLocation = new UIFloatingPageLocation();// 传值的链接UIComponentDataContractReturnLink[] objReturnLinks = new UIComponentDataContractReturnLink[1];objReturnLinks[0] = new UIComponentDataContractReturnLink();// 参数传递的目标 用于子页面接收值的NameobjReturnLinks[0].SourceMember = "EditPopupLabelText";// 参数值的来源NameobjReturnLinks[0].TargetMember = "ReturnVallueText";objAction.DataContractReturnMap = new UIComponentDataContractReturnMap();objAction.DataContractReturnMap.ReturnLinks = objReturnLinks;objAction.FrameLocation.Width = 500;objAction.FrameLocation.Height = 600;objAction.EndResponse = false;this.Page.ActionDispatcher.ExecuteAction(objAction);}catch (Exception ex){Page.StatusBar.WriteError(ex.Message.ToString());}
}

子页面取值

protected override void OnLoad(EventArgs e)
{try{base.OnLoad(e);// 取值string labelId = Page.PortalContext.DataContract.GetValueByName<string>("LabelId");LabelId.Data = labelId;if (!Page.IsPostBack){if (labelId != null){GetTranslateLabelByLabelId(labelId);}}}catch (Exception ex){Page.StatusBar.WriteError(ex.Message.ToString());}}

备注:添加VP的配置方法

参数

传值与回传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/860315.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用飞书自定义机器人通知消息

大家有没有这样的需求,就是正在执行某个任务的时候希望任务完成之后给个通知,或者是软件运行报错的时候每天定期收集错误日志。 平时我们工作用的飞书,所有现在用飞书机器人把消息通知出来,非常简单 好用 的消息通知。 类似这样的消息通知还有企业微信也有。飞书拉群的时候添…

01 _ 认识容器:容器的基本操作和实现原理

01 _ 认识容器:容器的基本操作和实现原理你好,我是程远。作为一名工程师,我猜在过去的几年时间里,你肯定用过或者听人提起过容器(Container)。 说实话,容器这东西一点都不复杂,如果你只是想用的话,那跟着Docker官网的说明,应该十来分钟就能搞定。 简单来说,它就是个…

[Java SE] 核心源码精讲:java.net.URLConnection

概述: URLConnectionURLConnection是一个抽象类,表示指向URL【指定资源】的活动连接URLConnection可以检查服务器发送的首部,并相应地做出响应。 它可以设置客户端请求中使用的首部字段。 URLConnection可以用POST、PUT和其他HTTP请求方法向服务器发回数据; URLConnection类…

中考英语优秀范文-001 How to Eat in a Healthy Way 怎样健康饮食

中考英语优秀范文-001 How to Eat in a Healthy Way 怎样健康饮食 1 写作要求 假设你叫李华,你们市将要举行以 “How to Eat in a Healthy Way” 为题的演讲比赛,请你准备写一篇演讲稿,内容包括: 说明此次演讲的主题 (how to eat in a healthy way); 我们应该少吃、不吃及…

2024-12-28 AI智能体日报

大家好,我是疯狂老包。专注于智能体开发与教学,《100个扣子实战案例持续更新中》。作者:疯狂老包,转载请注明原文链接:https://www.cnblogs.com/laobao1756435/p/18637255

AI日报

大家好,我是疯狂老包。专注于智能体开发与教学,《100个扣子实战案例持续更新中》。作者:疯狂老包,转载请注明原文链接:https://www.cnblogs.com/laobao1756435/p/18637255

AD批量更改PCB丝印位置

第一步:选中要排列字符的元件第二步: “A”—>“定位器文本(P)”—>选择标识符位置进行修改:结果:

Idea、pycharm初始化设置

IDEA、pycharm配置,下文真对IDEA设置,pycharm可参考 5. 详细设置 5.1 如何打开详细配置界面 1.显示工具栏 2、选择详细配置菜单或按钮 5.2 系统设置 1、默认启动项目配置 启动IDEA时,默认自动打开上次开发的项目?还是自己选择? 如果去掉Reopen projects on startup前面的…

CF补题 981-Div.3

CF补题 981-Div.3-20241226 Dashboard - Codeforces Round 981 (Div. 3) - Codeforces A: 题目大意:\(x\) 从 \(0\) 开始,轮流将 \(x\) 前后移动 \(i*2-1\), 求最后移动出 $-n,n $ 的 $ i$ #include <iostream> #include <math.h> using namespace std;int mai…

vue项目中使用swiper轮播

安装swipernpm install swiper@4 --save -dev npm install vue-awesome-swiper@3 --save-dev使用swiper<template><div class="swiper-container"><swiper :options="swiperOption"><swiper-slide v-for="(slide, index) in sli…

蓝牙配对弹框默认允许关闭

蓝牙配对的时候,会有个以下的弹框,客户需求是不需要人为去点击,默认允许配对 实际处理弹框配对的是BluetoothPairingController.java BluetoothPairingRequest.java这个文件主要负责处理配对弹框的广播申请,直接去掉那些流程,确认配对即可--- a/src/com/android/setting…