首页 > 其他分享 >Camstar Portal 弹出层的使用:父子页面值传递

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

时间:2024-12-28 11:07:55浏览次数:5  
标签:objPageDataMembers Camstar intDMIndex objAction DataContract 弹出 Portal new Page

效果如下

在Onload方法注册事件

protected override void onl oad(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;
    }
    else
        Page.DataContract = new UIComponentDataContract();

    // manually add the dataContractMember since the custom control's property does not show up at design time
    UIComponentDataMember[] 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的Name
    objPageDataMembers[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();
        // 参数传递的目标 用于子页面接收值的Name
        objReturnLinks[0].SourceMember = "EditPopupLabelText";
        // 参数值的来源Name
        objReturnLinks[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 onl oad(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的配置方法

参数

传值与回传

标签:objPageDataMembers,Camstar,intDMIndex,objAction,DataContract,弹出,Portal,new,Page
From: https://www.cnblogs.com/coderlucas/p/18637271

相关文章

  • Flutter 安卓系统输入框获取焦点虚拟键盘不弹出的问题。
    Flutter如果你要实现手动点击输入框进行弹出虚拟键盘,但是通过FocusNode使输入框获取到焦点不弹出虚拟键盘的业务方式。大致的核心实现代理是:TextField(...onTap:(){setState((){_openIndex=i;});//TODO1},keyboardType:_openIndex==i......
  • 解决WPF弹出子窗体如何设置停靠在主窗体的边缘
    窗体代码思路获取主窗体的位置坐标,根据主窗体的位置坐标和长宽尺寸计算子窗体的实际位置,并赋值给子窗体的Top和Left属性。publicpartialclassPromptDialogBox:Window{///<summary>///关闭计时器///</summary>privateDispatcherTimer_timerCl......
  • js中有哪些类型的弹出框?
    在JavaScript和前端开发中,有几种常见的弹出框(或称为对话框)类型。这些弹出框可以帮助你与用户进行交互,提供信息,或者请求输入。以下是一些主要的类型:警告框(Alert):alert()函数是JavaScript中最简单的弹出框类型。它显示一个带有指定消息和OK按钮的警告框。例如:alert("这是一个警......
  • Camstar禁用SSL,使用Http替代Https登录Portal
    前提:1.Camstar安装正常并正常可以通过浏览器打开登录2.适用Camstar版本:8.3/8.5/8.9(问就是别的版本没用过)默认安装完成的地址:https://localhost/CamstarPortal/default.htm#/loginStep1:进入系统注册表修改相关信息CamstarInSiteServer进入注册表:regedit找到路......
  • Flutter有关在无Context上下文的地方进行导航和弹出对话框的讨论
    关于导航页面全局监听蓝牙状态的问题Flutter中没有上下文的AlertDialog关于导航页面全局监控蓝牙状态的问题?上边是有关全局监听状态的,但问题都是一致的,就是不在widget的build方法中进行弹窗或路由。第一种使用了go_router库的,通过配置redirect回调进行判断返回的组件,但是不......
  • jquery响应式弹出层lightbox插件slick-lightbox.js
    slick-lightbox.js是一款基于slick.js和jquery的响应式弹出层lightbox插件。该jquerylightbox插件支持图片懒加载,支持键盘交互,支持HTML5HistoryAPI等。功能非常强大。在线预览  下载 安装可以通过bower来安装slick-lightbox.js插件。bowerinstall-Sslick-lightbo......
  • windows 启动时弹出【选择操作系统】的解决办法
    原因因为台式机重装,原来的旧硬盘没拔,插上新硬盘后电脑有两个硬盘,开机时识别到有两个系统所以出现上述情况,新硬盘的分区方式中,引导分区记录了这个双系统信息解决办法win+R进入运行界面输入MSConfig,点击回车,进入启动设置上点击“引导”,可以看到有两个启动盘,把多余那个......
  • 电脑频繁弹出“缺少d3dcompiler_47.dll”提示?“缺少d3dcompiler_47.dll”要怎么解决?
    电脑频繁弹出“缺少d3dcompiler_47.dll”提示?一文带你了解原因与解决方案在日常使用电脑的过程中,不少用户可能会遇到系统频繁弹出“缺少d3dcompiler_47.dll”的提示。这个看似陌生的文件名,实则对电脑游戏的运行至关重要。d3dcompiler_47.dll是DirectX的一部分,具体来说是Direct......
  • 游戏弹出“由于找不到EMP.dll,无法继续执行代码”这类提示是什么原因?教你五个方法解决!
    emp.dll是一个动态链接库(DynamicLinkLibrary,简称DLL)文件,它是Windows操作系统中的一种特殊类型的可执行文件。DLL文件包含可由多个程序同时使用的代码和数据,其主要目的是实现模块化,以便于程序的更新和动态链接。emp.dll文件通常包含特定功能或任务的实现代码,这些功能可能包括......
  • 在使用uview组件库时实现字符匹配弹出对应图片
    HTML部分: <u-overlay:show="show"@click="closeSeat"> <viewclass="warp"> <viewclass="rect"> <imgv-for="(image,index)inseatImages":key="index"......