如何将数据从aspx页面传递到ascx模式弹出窗口?

时间:2008-08-15 20:01:23

标签: c# asp.net asp.net-ajax

我是ASP.NET的新手,并试图了解事情是如何完成的。我来自C#背景,因此代码隐藏部分很容易,但是像Web开发人员那样思考是不熟悉的。

我有一个包含复选框网格的aspx页面。我有一个按钮,通过Button_Click事件编码,以收集检查哪些行的列表,并从该列表中创建一个会话变量。我的ascx页面的ModalPopupExtender引用了相同的按钮(通过TargetControlID),它控制了ascx页面上的面板。

单击该按钮时,模式弹出窗口将打开,但Button_Click事件永远不会被触发,因此模态不会获取其会话数据。

由于这两个页面是分开的,我不能从aspx.cs代码调用ModalPopupExtender,我无法从ascx.cs代码到达复选框列表,我看不到填充方法我的会话变量,然后以编程方式激活一些其他隐藏的按钮或控件,然后打开我的模态弹出窗口。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

所有usercontrol(.ascx)文件都是一组控件,您将这些控件组合在一起以提供一些可重用的功能。在页面生命周期中,它中定义的控件仍会添加到页面的控件集合(.aspx)中。 ModalPopupExtender使用javascript和dhtml来显示和隐藏usercontrol客户端中的控件。您所看到的是,Clickal事件由ModalPoupExtender在客户端处理,它正在取消回发到服务器。这是设计的默认行为。您当然可以从usercontrol的代码隐藏中访问该页面的控件集合,因为它是同一控制树的所有部分。只需使用任何控件的FindControl(xxx)方法来搜索您需要的子项。

答案 1 :(得分:1)

在DancesWithBamboo的回答之后进行了一些研究之后,我想出了如何让它发挥作用 我的aspx页面中对ascx页面的示例引用:

<uc1:ChildPage ID="MyModalPage" runat="server" />

抓取并打开ModalPopupExtender(名为modalPopup)的aspx代码隐藏将如下所示:

AjaxControlToolkit.ModalPopupExtender mpe = 
    (AjaxControlToolkit.ModalPopupExtender) 
          MyModalPage.FindControl("modalPopup");
mpe.Show();

答案 2 :(得分:0)

抱歉,但我很困惑。你不能直接打电话给ascx,所以......

您在同一页面中调用的模态代码,如隐藏面板等;

或者是您在点击事件上调用的另一个aspx页面?