gpt4 book ai didi

asp.net - ModalPopupExtender 不显示在更新面板中的按钮回发上

转载 作者:行者123 更新时间:2023-12-01 00:29:30 27 4
gpt4 key购买 nike

我知道这种问题已经被问过很多次了,但我花了好几个小时来筛选不匹配或不起作用的答案,而且我无能为力。

背景:我有一种情况,我想评估一条记录以确保它符合一组特定的标准。如果它符合条件,则发出警报消息以供用户确认。除非条件匹配,否则我不想提高弹出窗口。

我想要完成的伪代码:

  • 用户在多个字段中输入信息
  • 用户单击“保存”(cmdUpdate)
  • 在“保存”点击功能中,它会检查相同的记录是否已经存在
    在数据库中(例如,这是一个副本)。
  • 如果它不是重复的继续保存功能
  • 如果它是重复提示用户确认保存重复。

  • 我无法在回发之前/之后显示弹出窗口。我尝试了一种设置 session 值以维护状态的黑客解决方法。该值在预渲染中测试为正,并调用 modalpopupextender.show 但它从未成功触发到屏幕。如果有人有更好的方法,我不反对切换到 javascript 解决方案,但我必须检查后面的 asp.net 代码中的重复项。

    标记:
    <asp:UpdatePanel ID="upMainContent" runat="server" UpdateMode="Conditional"  ChildrenAsTriggers="False" >
    <ContentTemplate>
    <asp:Label ID="lblDummy" runat="server" EnableViewState="false" Style="display: none;" />
    <asp:Panel ID="pnlConfirmation" runat="server" Width="400px" Style="display: none;" CssClass="ModalPopupFront">
    <div ID="Div1" runat="server" class="PopupHeader" style="width:400px;">&nbsp;&nbsp;Duplicate Record</div>
    <br />
    <asp:Label ID="lblConfirmationMessage" runat="server" Text="This record has already exists.<br/> Are you sure you want to save a duplicate entry?"></asp:Label><br />
    <br />
    <div style="text-align:right;">
    <asp:Button ID="btnSaveAnyway" runat="server" Text="Save" OnClick="btnSaveAnyway_Click" />
    <asp:Button ID="btnCancelSave" runat="server" Text="Cancel" OnClick="btnCancelSave_Click" />
    </div>
    </asp:Panel>
    <ajax:ModalPopupExtender ID="mpeSaveConfirmation" runat="server" Enabled="False"
    TargetControlID="lblDummy" PopupControlID="pnlConfirmation"
    BackgroundCssClass="modalBackground" DropShadow="true"
    CancelControlID="btnCancelSave"
    RepositionMode="RepositionOnWindowResizeAndScroll" PopupDragHandleControlID="pnlConfirmation" Drag="true">
    </ajax:ModalPopupExtender>


    <!-- all the input fields/misc content -->

    <asp:Button id="cmdUpdate" runat="server" CausesValidation="true" OnClick="cmdUpdate_Click" Text="Save" ValidationGroup="vg1" ToolTip="Save the current record" TabIndex="102" />

    </ContentTemplate>
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="ddlStateId" EventName="SelectedIndexChanged" />
    <asp:AsyncPostBackTrigger ControlID="ddlCountyId" EventName="SelectedIndexChanged" />
    </Triggers>
    </asp:UpdatePanel>

    隐藏代码:
        Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
    '...

    If GetSessionValue("HackWorkaround") Then
    mpeSaveConfirmation.Enabled = True
    mpeSaveConfirmation.Show()
    End If
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    '...
    If not Page.IsPostBack Then
    SetSessionValue("HackWorkaround", False)
    End if
    '...
    End Sub

    Protected Sub cmdUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs)


    If tbOpTill.NewRecordIdenticalToLast() And tbOpRecord.NewRecordIdenticalToLast() Then
    SetSessionValue("HackWorkaround", True)
    Else
    SetSessionValue("HackWorkaround", False)
    SetSessionValue("LastOpRecordIDSaved", tbOpRecord.OpRecordId)

    Dim isEdit As Boolean = ResetOpRecord("Till", tbOpTill)
    SmartRedirect("Optill/oprecord_edit.aspx")
    End If

    End Sub


    Protected Sub btnSaveAnyway_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    SetSessionValue("HackWorkaround", False)
    mpeSaveConfirmation.Enabled = False
    mpeSaveConfirmation.Hide()
    'Duplicate record exists, but the customer wants to save anyway.
    DoSave()

    Dim isEdit As Boolean = ResetOpRecord("Till", tbOpTill)
    SmartRedirect("Optill/oprecord_edit.aspx")
    End Sub

    Protected Sub btnCancelSave_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    SetSessionValue("HackWorkaround", False)
    mpeSaveConfirmation.Enabled = False
    mpeSaveConfirmation.Hide()
    'do nothing and return to the screen.
    End Sub

    最佳答案

    你的问题在这里:

    <ajax:ModalPopupExtender ID="mpeSaveConfirmation" runat="server" Enabled="False"

    Protected Sub btnSaveAnyway_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    SetSessionValue("HackWorkaround", False)
    **mpeSaveConfirmation.Enabled = False**
    mpeSaveConfirmation.Hide()

    在后面的代码中做到这一点。并相应地同步隐藏显示。我还可以在您使用 Style="display:none"的某些地方的代码中看到。所以如果你想显示你需要使用 HtmlStyleWriter.Display,"block"。如果在这种情况下使用 Visible true false,它将不起作用。我的意思是说,无论你在哪里使用可见真假,在代码隐藏中你都必须使用类似的。如果您使用样式,那么在代码隐藏中您必须使用相同的样式。

    关于asp.net - ModalPopupExtender 不显示在更新面板中的按钮回发上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5582477/

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