gpt4 book ai didi

c# - 将数据传递到 ModalPopupExtender

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:06 27 4
gpt4 key购买 nike

我有一个允许客户应用付款信息的 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();
}

因此,当用户点击付款链接时,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 代码。

最佳答案

不必创建用户控件来将数据传递到模态弹出窗口。如果我需要在不同位置重用它,我只会创建一个用户控件。如果您不需要在多个位置重复使用它,那么您就不需要用户控件。而是这样做:

假设您需要一个显示字符串并具有确定和取消按钮的弹出窗口,但您需要在弹出之前设置字符串值。

  1. 创建面板。
  2. 将 UpdatePanel 放在第 1 步中的面板中。
  3. 在 UpdatePanel 中放置一个 Button 和 ModalPopupExtender。
  4. 在 UpdatePanel 中的弹出窗口扩展器下方放置一个标签、确定和取消按钮。如下所示:

    <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" />&nbsp;
    <asp:Button ID="CancelButton" runat="server" Text="Cancel" CausesValidation="false" />
    </ContentTemplate>
    </asp:UpdatePanel>
    </asp:Panel>
  5. 接下来,在您的页面上放置一个 Button 和一个 TextBox,如下所示:

    <asp:TextBox ID="MyTextBox" runat="server" />
    <asp:Button ID="MyButton" runat="server" Text="Popup" OnClick="MyButton_OnClick" />
  6. 现在,在您页面的隐藏代码中,放置 MyButton 的处理程序:

    protected void MyButton_OnClick(object sender, EventArgs e)
    {
    Label1.Text = MyTextBox.Text;
    UpdatePanel1.Update();
    ModalPopupExtender1.Show();
    }

关于c# - 将数据传递到 ModalPopupExtender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1272636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com