C# 正在从DevExpress ASPXPopUpControl查找父页面上的控件
各位好 我一直在处理下一个场景: 首先,我有一个结构为webform的webform,其中包含一个DevExpress ASPXPopUpControl和一些其他控件。在PopUpControl中有一个UserControl(我们称之为ucA),其中包含一些其他控件,还有一个UserControl(称为ucB),其中包含一个被诅咒的ASPxHtmlEditor(因为这是一个新的需求而添加) 当用户点击主webform上的按钮时,我会显示包含ucA的弹出窗口(最初是一个jQuery对话框,但由于HTMLEditor将jQuery弄糟,我被迫打破标准并使用弹出窗口)。用户填写ucA中的一些字段并点击保存按钮。在用户点击后,我保存了一些数据,此时我需要恢复webform中的文本框值 我使用的是Parent.FindControl[“myTextBox”],但它将popupcontrol视为父控件。当我使用jQuery(在实现编辑器之前)时,它工作得非常好 我觉得这是一件微不足道的事情,但当我说这偷走了我很多小时的研究时,我感到很难受 提前谢谢C# 正在从DevExpress ASPXPopUpControl查找父页面上的控件,c#,asp.net,devexpress,C#,Asp.net,Devexpress,各位好 我一直在处理下一个场景: 首先,我有一个结构为webform的webform,其中包含一个DevExpress ASPXPopUpControl和一些其他控件。在PopUpControl中有一个UserControl(我们称之为ucA),其中包含一些其他控件,还有一个UserControl(称为ucB),其中包含一个被诅咒的ASPxHtmlEditor(因为这是一个新的需求而添加) 当用户点击主webform上的按钮时,我会显示包含ucA的弹出窗口(最初是一个jQuery对话框,但由于H
编辑我忘了提到我想在主webform中查找另一个UserControl。此uc用于向用户显示核心消息,因此当用户点击保存按钮时,会发生保存,弹出窗口关闭,我从ucA中查看(Parent.FindControl(“myUCMessageBoard”))usercontrol以显示“事务完成”消息 您应该将ucA中的所有控件作为属性公开,然后以与您相同的方式在DevxPopup中查找该控件。考虑到ucA中需要的所有控件都具有访问它们的属性,您可以执行所需的所有逻辑 例如:
public ucA : UserControl
{
public string myTextBoxText
{
get
{
return ((TextBox)Controls.FindControl("myTextBox")).Text;
}
}
/*And lot of controls*/
}
然后在表单中查找弹出窗口
var ucA = (UcA)Form.Controls.FindControl("myPopup").Controls.FindControl("myucA");
ucA.myTextBoxText = /*Do stuff here with the text*/
希望这对你有帮助 我认为您必须通过使用
ViewState
来做一些有点不规范的事情。如果我理解正确,您正试图从嵌套在PopupControl中的UserControl访问Web窗体上的文本框文本(因此您无法一直遍历到Web窗体级别)
因此,在这个过程中的某个时刻,我要做的是将文本存储在一个ViewState变量中,您可以从用户控件访问该变量。这不是最优的,但既然您已经在进行黑客攻击以使其正常工作,那么还有什么比这更黑客呢?您在哪里调用Parent.FindControl()?从ucA还是从ucB?从ucA,因为在那里调用保存过程。老实说,我没想过。对于文本框的情况应该足够了,谢谢!我对这个问题做了一些更新,我错过了一些内容。您可能需要做的是将ucA的保存方法公开为public
,然后您可以从主Web表单中查找控件,调用Save,如果成功,则显示成功消息。感谢您的快速回答。我会尝试用加里森的答案来实现你的答案。这两种方法都给了我一个好主意。