2011-04-19 78 views
0

在gridview中,我有一個「電子郵件」按鈕和一個「刪除」按鈕,使用modalpopupextender打開一個模態彈出窗口。問題是單擊按鈕時電子郵件窗口會打開,但單擊按鈕時不會打開「刪除」窗口。我以同樣的方式使用兩個modalpopupextender。兩個ModalPopupExtender以相同的方式使用,只有一個工作

<asp:ButtonField ButtonType="Button" CommandName="Email" Text="Email" /> 
        <asp:ButtonField ButtonType="Button" CommandName="Delete" Text="Delete" /> 

<%-- Email modal--%>  
    <asp:Panel ID="pnlPopupEmail" runat="server" Width="500px" Style="display: none"> 
    <asp:UpdatePanel ID="updPnlEmail" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
    <asp:Button ID="btnShowEmail" runat="server" Style="display: none" /> 
       <ajaxToolkit:ModalPopupExtender ID="mdlPopupEmail" runat="server" TargetControlID="btnShowEmail" 
        PopupControlID="pnlPopupEmail" CancelControlID="btnCancel" BackgroundCssClass="modalBackground" /> 
     <div class="EmailPopup"> 
      <table> 
       <tr> 
        <td> 
         To: 
        </td> 
        <td> 
         <asp:TextBox ID="EmailTo" runat="server" Width="350"></asp:TextBox> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         From: 
        </td> 
        <td> 
         <asp:TextBox ID="EmailFrom" runat="server" Width="350"></asp:TextBox> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         Subject: 
        </td> 
        <td> 
         <asp:TextBox ID="Subject" runat="server" Width="350"></asp:TextBox> 
        </td> 
       </tr> 
       <tr> 
        <td></td> 
         <td> <asp:TextBox ID="EmailMessageBox" Width="350" Height="150" runat="server" TextMode="MultiLine" Wrap="true"></asp:TextBox> 
        </td> 
       </tr> 
       <tr> 
        <td> 
        </td> 
        <td> 
         <asp:LinkButton ID="SendBtn" runat="server" OnClick="SendBtn_Clicked" Text="Send" /> 
         <asp:LinkButton ID="btnCancel" runat="server" Text="Cancel" CausesValidation="false" /> 
        </td> 
        <td> 
         <asp:Label ID="theID" runat="server" Visible="false"></asp:Label> 
        </td> 
       </tr> 
       </table> 
     </div> 

    </ContentTemplate> 
    </asp:UpdatePanel> 
    </asp:Panel> 
    <%-- -----end email modal--%> 
    <%-- Start Delete Confirmation Modal --%> 
    <asp:Panel ID="DelConfirmPanel" runat="server" Width="500px" Style="display: none"> 
     <asp:UpdatePanel ID="DelConfirmUpdatePanel" runat="server" UpdateMode="Conditional"> 
      <ContentTemplate> 
      <asp:Label ID ="TESTLabel" runat="server" Text="Are you sure?" ></asp:Label> 
       <asp:Button ID="DelModalButton" runat="server" Style="display: none" /> 
       <ajaxToolkit:ModalPopupExtender ID="modalPopUpDelConfirm" runat="server" TargetControlID="DelModalButton" 
        PopupControlID="DelConfirmPanel" CancelControlID="DeleteCancel" BackgroundCssClass="modalBackground" /> 
       <div class="DeletePopup"> 
        <asp:LinkButton ID="DelConfirmedButton" runat="server" OnClick="DeleteConfirmation_Clicked" 
         Text="Delete" /> 
        <asp:LinkButton ID="DeleteCancel" runat="server" Text="Cancel" CausesValidation="false" /> 
       </div> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </asp:Panel> 
    <%-- End Delete Confirmation Modal --%> 
</div> 

然後在代碼隱藏我有檢查命令名稱並更新在UpdatePanel並且示出了modalpopupextender的方法。

protected void btn_Clicked(object sender, GridViewCommandEventArgs e) 
{ 

    if (e.CommandName == "Email") 
    { 
     // a bunch of stuff that I am leaving out but is just changing fields in the 
     //table withing the modal popup 
     updPnlEmail.Update(); 
     mdlPopupEmail.show(); 
    } 

    if (e.CommandName.Equals("Delete")) 
    { 
     int index = Convert.ToInt32(e.CommandArgument); 
     String id = gvReservations.DataKeys[index].Value.ToString(); // get id 
     try 
     { 
      DelConfirmUpdatePanel.Update(); 
      modalPopUpDelConfirm.Show(); 
     } 
     catch (Exception ex) 
     { 
      throw new Exception(ex.Message); 
     } 
    } 
} 

任何想法,爲什麼一個工程,而不是其他?有沒有一種好的方法來調試這種錯誤?非常感謝您的幫助!

回答

1

想通了。

<asp:ButtonField ButtonType="Button" CommandName="Delete" Text="Delete" /> 

這是問題所在。我沒有意識到「刪除」是一個保留的命令名稱。所以當這個按鈕被點擊時,一個異常被拋出,說它不能從表中刪除。因此,模態彈出窗口從未被顯示。我通過在chrome工具中打開javascript控制檯來解決這個問題。

所以要解決這個問題,我將命令名更改爲別的,現在一切正常。

相關問題