【问题标题】:Why does the pop up disappear upon check box click event?为什么在复选框单击事件时弹出消失?
【发布时间】:2017-07-17 16:05:53
【问题描述】:

我在模板字段中使用了面板,当我选中复选框时它消失了。

我尝试修复它但仍然消失。该代码在调试时运行良好,但显然不是。如果可以的话请帮忙。我已经花了很多时间。

 <asp:TemplateField HeaderText='Finalized ?'>
  <ItemTemplate>
   <asp:LinkButton ID="btnFinalizedRecord" OnClick="btnFinalizedRecord_Click" runat="server" Text='<%# Convert.ToBoolean(Eval("IsFinalized")) == true? "Already Finalized": "Finalize" %>'
                                CssClass="" ToolTip="Finalize" CommandName="Finalize"
                                CommandArgument='<%#Eval("IsFinalized")%>' Enabled='<%# Convert.ToBoolean(Eval("IsFinalized")) == true? false: true %>'></asp:LinkButton>
     <ajax:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server" DisplayModalPopupID="mpe2" TargetControlID="btnFinalizedRecord">
     </ajax:ConfirmButtonExtender>
     <ajax:ModalPopupExtender ID="mpe2" runat="server" PopupControlID="pnlPopup2" TargetControlID="btnFinalizedRecord" OkControlID="btnYes"
                                CancelControlID="btnNo" BackgroundCssClass="modalBackground">
      </ajax:ModalPopupExtender>
      <asp:Panel ID="pnlPopup2" runat="server" CssClass="modalPopup" Style="display: none">
      <div class="header">
        Confirmation
      </div>
      <div class="body">
        Are you sure to <b>Finalize</b>? 
       <asp:CheckBox ID="chkConfirmFinalize" runat="server" AutoPostBack="true" OnCheckedChanged="chkConfirmFinalize_CheckedChanged" />
        <br />
        You will not be able to perform an edit after finalizing.
      </div>                                        
      <div class="Popupfooter" align="right">
       <asp:Button ID="btnYes" Enabled="false" CssClass="btn btn-sm btn-danger" runat="server" Text="Yes" />
       <asp:Button ID="btnNo" CssClass="btn btn-sm btn-primary" runat="server" Text="No" />
      </div>
     </asp:Panel>
    </ItemTemplate>
  </asp:TemplateField>

.cs:

    protected void chkConfirmFinalize_CheckedChanged(object sender, EventArgs e)
    {
        try
        {
            var chkConfirmFinalize = sender as CheckBox;
            GridViewRow gr = (GridViewRow)chkConfirmFinalize.NamingContainer;
            Panel pnlPopup2 = gr.FindControl("pnlPopup2") as Panel;
            if (chkConfirmFinalize.Checked == true)
            {
                btnYes.Visible = true;
            }
            else 
            {
                btnYes.Visible = false;
            }
            pnlPopup2.Visible = true;
        }
        catch (Exception ex)
        {
            Utility.Msg_Error(Master, ex.Message);
        }
    }

【问题讨论】:

  • &lt;asp:CheckBox ID="chkConfirmFinalize" runat="server" AutoPostBack="true" OnCheckedChanged="chkConfirmFinalize_CheckedChanged" /&gt; 也许您的 AutoPostBack 会导致它刷新?
  • 是的,我知道,我想要一个解决方案。

标签: c# asp.net .net c#-4.0 webforms


【解决方案1】:

使用 AutoPostBack 时,您正在重新加载页面(转到服务器并返回),这就是面板消失的原因。 您应该尝试使用带有“onclick”事件的 javascript。

<asp:CheckBox ID="chkConfirmFinalize" runat="server" OnClick="somefunction(this)" />

并在jquery中显示按钮:

function somefunction(element) {
    if ($element.val() == true) {
        $("#btnYes").prop('disabled', false);
    } else {
        $("#btnYes").prop('disabled', true);
    }
}

【讨论】:

    猜你喜欢
    • 2013-02-25
    • 2021-02-21
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    相关资源
    最近更新 更多