Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在从DevExpress ASPXPopUpControl查找父页面上的控件_C#_Asp.net_Devexpress - Fatal编程技术网

C# 正在从DevExpress ASPXPopUpControl查找父页面上的控件

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的webform,其中包含一个DevExpress ASPXPopUpControl和一些其他控件。在PopUpControl中有一个UserControl(我们称之为ucA),其中包含一些其他控件,还有一个UserControl(称为ucB),其中包含一个被诅咒的ASPxHtmlEditor(因为这是一个新的需求而添加)

当用户点击主webform上的按钮时,我会显示包含ucA的弹出窗口(最初是一个jQuery对话框,但由于HTMLEditor将jQuery弄糟,我被迫打破标准并使用弹出窗口)。用户填写ucA中的一些字段并点击保存按钮。在用户点击后,我保存了一些数据,此时我需要恢复webform中的文本框值

我使用的是Parent.FindControl[“myTextBox”],但它将popupcontrol视为父控件。当我使用jQuery(在实现编辑器之前)时,它工作得非常好

我觉得这是一件微不足道的事情,但当我说这偷走了我很多小时的研究时,我感到很难受

提前谢谢


编辑我忘了提到我想在主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,如果成功,则显示成功消息。感谢您的快速回答。我会尝试用加里森的答案来实现你的答案。这两种方法都给了我一个好主意。