2017-02-27 65 views
0

我已經使用面板​​內的模板字段,當我檢查複選框時它會消失。爲什麼在複選框單擊事件時彈出消失?

我試着修復它,但仍然消失。代碼在調試時工作良好,但顯然不是。如果可以的話請幫忙。我已經花了很多時間。

<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); 
     } 
    } 
+0

'的'也許你的AutoPostBack導致它刷新? –

+0

是的,我知道,我想要一個解決方案。 – Covert

回答

0

用的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); 
    } 
} 
相關問題