从DevExpress ASPXPopUpControl寻找父页面上的控件

时间:2013-07-09 19:17:54

标签: c# asp.net devexpress

好先生!

我一直在搞乱下一个场景:

首先,我有一个结构化为WebForm的webform,其中包含DevExpress ASPXPopUpControl和其他一些控件。在PopUpControl中有一个UserControl(让我们称之为ucA)包含一些其他控件和一个UserControl(称为ucB),其中包含一个被诅咒的ASPxHtmlEditor(因为它是一个新的要求而添加)。

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

我正在使用Parent.FindControl [“myTextBox”],但它将popupcontrol视为父级。当我使用jQuery时(在实现编辑器之前),它就像一个魅力。

当我说这偷了很多小时的研究时,我觉得这是微不足道的事情。

提前致谢。

编辑我忘了提到我想在主webform上寻找另一个UserControl。这个uc用于向用户显示核心消息,所以当他点击保存按钮时,保存发生,弹出窗口关闭,我从ucA看(Parent.FindControl(“myUCMessageBoard”)),用户控件显示“事务完成“ 信息。

2 个答案:

答案 0 :(得分:1)

我认为你必须使用ViewState做一些有点hacky的事情。如果我理解正确,您试图通过嵌套在PopupControl中的UserControl访问Web窗体上的TextBox Text(因此您无法一直遍历Web表格级别)。

因此,我在该过程中的某些方面所做的是将文本存储在可以从用户控件访问的ViewState变量中。这不是最优的,但是既然你已经习惯了它的工作,那还有什么更黑的呢?

答案 1 :(得分:0)

您应该将ucA中的所有控件公开为属性,然后以与您相同的方式查找DevxPopup中的控件。鉴于ucA所需的所有控件都具有访问它们的属性,您可以执行所需的所有逻辑!

示例:

public ucA : UserControl
{
    public string myTextBoxText 
    { 
        get 
        {
            return ((TextBox)Controls.FindControl("myTextBox")).Text;
        }
    }
    /*And lot of controls*/
}

然后你在Form

中寻找弹出窗口
var ucA = (UcA)Form.Controls.FindControl("myPopup").Controls.FindControl("myucA");
ucA.myTextBoxText = /*Do stuff here with the text*/

希望这能帮到你!