效果如下


在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; |
| } |
| else |
| Page.DataContract = new UIComponentDataContract(); |
| |
| |
| 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(); |
| |
| 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()); |
| |
| objAction.PageName = "TranslateEditPopupVP"; |
| objAction.FrameLocation = new UIFloatingPageLocation(); |
| |
| UIComponentDataContractReturnLink[] objReturnLinks = new UIComponentDataContractReturnLink[1]; |
| objReturnLinks[0] = new UIComponentDataContractReturnLink(); |
| |
| objReturnLinks[0].SourceMember = "EditPopupLabelText"; |
| |
| 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 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的配置方法
参数

传值与回传

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理