我有一个ModalPopupExtender,它允许客户应用付款信息。它一直工作得很好。然后客户要求查看ModalPopup上的总到期金额。这看起来并不是什么大不了的事,只是从父控件中提取总的到期日并将其传递给ModalPopup控件。似乎没有简单的办法。
这是我的HTML代码,请记住这段代码是用UpdatePanel包装的
<asp:LinkButton ID="lnkMakePayment" runat="server" Visible="true" OnClick="lnkMakePayment_Click" >
<asp:Label ID="lblMakePayment" runat="server" Text="Make Payment"/></asp:LinkButton>
<asp:Button ID="btnDummy" style="display: none;" runat="server"
OnClick="btnDummy_Click" />
<ajaxToolkit:ModalPopupExtender ID="mdlPopupPayment" runat="server"
TargetControlID="btnDummy" PopupControlID="pnlMakePayment"
CancelControlID="popUpCancel" DropShadow="true" BackgroundCssClass="modalBackground">
</ajaxToolkit:ModalPopupExtender>
<asp:Panel ID="pnlMakePayment" runat="server" Style="display: none;"
SkinID="PopUpPanel" class="ContentBoxColor" Width="400px" Height="170px">
<MP1:MakePaymentPopup ID="MakePayment" runat="server" />
<div style="text-align: right; width: 100%; margin-top: 5px;">
<asp:Button ID="popUpCancel" runat="server" Text="Cancel" Width="0px" />
</div>
</asp:Panel>
下面是暗号
protected void btnDummy_Click(object sender, EventArgs e) { }
protected void lnkMakePayment_Click(object sender, EventArgs e)
{
mdlPopupPayment.Show();
}
因此,当用户点击make payment链接时,ModalPopup工作正常。它甚至触发父控件侦听的事件,以应用付款信息和用户在弹出窗口中填写的所有关联付款详细信息。再说一遍,这一切都很好。
由于ModalPopup,我第一次尝试发送总计如下:
protected void lnkMakePayment_Click(object sender, EventArgs e)
{
// MakePayment is the actual ModalPopup control and total due is a public property
MakePayment.TotalDue = txtTotalDue.Text
mdlPopupPayment.Show();
}
问题在于,当我单击链接以显示ModalPopup时,PageLoad事件不会触发,因此我无法将我的属性分配给ModalPopup内的标签。
我甚至尝试使用session对象,但也遇到了同样的问题。
我甚至不能访问数据库,因为我不能传递客户ID。
有什么想法吗?
我是一个Javascript新手,更擅长服务器端解决方案,但在这一点上,我愿意尝试任何东西。
MakePayment用户控件包含3个asp文本框。一个用于用户输入付款金额,另一个用于付款类型,第三个用于支票号码等票据。控件上还有一个“应用”和“取消”按钮。父控件是一个基本的ascx页面,它是一个数据输入屏幕,包含ModalPopupExtender和激活它的所有html代码。
最佳答案
不需要创建用户控件就可以将数据传递到模式弹出窗口中。我只会创建一个用户控件,如果我需要在不同的位置重用它。如果不需要在多个位置重用它,则不需要用户控件。相反,请执行以下操作:
假设您需要一个弹出窗口,其中显示一个字符串,并有OK和Cancel按钮,但是您需要在它弹出之前设置字符串值。
创建面板。
从步骤1开始,在面板内放置一个UpdatePanel。
在更新面板中放置按钮和ModalPopupExtender。
在弹出式扩展器下面的UpdatePanel中放置一个标签,即Ok和Cancel按钮。如下所示:
<asp:Panel ID="Panel1" runat="server" CssClass="popup" Width="320px" Style="display:none">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Style="display:none" />
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
TargetControlID="Button1"
PopupControlID="Panel1"
CancelControlID="CancelButton">
</cc1:ModalPopupExtender>
<asp:Label ID="Label1" runat="server" />
<asp:Button ID="OkButton" runat="server" Text="Ok" CausesValidation="true" OnClick="OkButton_OnClick" />
<asp:Button ID="CancelButton" runat="server" Text="Cancel" CausesValidation="false" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
接下来,在您的页面上,放置一个按钮和一个这样的文本框:
<asp:TextBox ID="MyTextBox" runat="server" />
<asp:Button ID="MyButton" runat="server" Text="Popup" OnClick="MyButton_OnClick" />
现在,在页面的代码隐藏中,放置
MyButton
的处理程序:protected void MyButton_OnClick(object sender, EventArgs e)
{
Label1.Text = MyTextBox.Text;
UpdatePanel1.Update();
ModalPopupExtender1.Show();
}