0

私は Ajax にまったく慣れておらず、トレーニングも受けていません。同僚のコードをコピーしているだけです。2 つの Ajax コントロールを含むページがあります。1 つは同僚が作成し、もう 1 つは私が作成しました。1 つのアイテムを除いてすべてが正常に機能しており、同僚は別のプロジェクトに目を向けているので、これを把握する必要があります。問題は、私が作成した Ajax コントロールが、Close と Select の 2 つのボタンを持つ ListBox をポップアップ表示することです。Select ボタンには OnClick イベントがあり、予想どおりポストバックが発生します。ただし、[閉じる] ボタンは機能しません。OnClick イベントがあり、それでもポストバックが発生します。これは、私の同僚が書いた、同じページにある非常によく似た Ajax コントロールには当てはまりません。コードは以下です。私の同僚のコードには電子メール テンプレートが含まれています。私のものには、メールルックアップが含まれます。私の人生では、違いはわかりません。なぜ私の [閉じる] ボタンが PostBack を引き起こし、同僚の [閉じる] ボタンはそうしないのか教えてもらえますか?

<!--my co-worker's control-->
<tr>
        <td width="20%"><br /><div class="formtext">Email Template:</div></td>

 <td colspan="3"><br />
     <asp:Button ID="btn_ShowTemplate" runat="server" 
         Text="View/Edit Template"  />
        <ajax:ModalPopupExtender ID="mpTemplate" runat="server" PopupControlID="panelTemplate" TargetControlID="btn_ShowTemplate"
    CancelControlID="BtnTemplateClose" BackgroundCssClass="modalBackground">
</ajax:ModalPopupExtender>

 <asp:Panel ID="panelTemplate" runat="server" CssClass="modalPopupTemplate" align="center">
          <div class="formtext_modal">Litigation Hold Email Template <img src="images/v2/modal_email.png" alt="Email" /><br /></div>
          <cc1:Editor ID="TemplateEditor" runat="server" Width="675px" Height="400px" />
          <br />
    <asp:Button ID="BtnTemplateClose" runat="server" Text="Close" CssClass="btnMatterClose" />&nbsp;&nbsp;
    <asp:Button ID="btnTemplateSave" runat="server" Text="Save" CssClass="btnMatterSelect" OnClick="btnTemplateSave_Click" />
</asp:Panel></td>
  </tr>

<!--my control-->
<tr>
  <!-- email cc section -->
   <td>Email CC:<br /></td>
  <td colspan="3"><asp:Button ID="btnEmails" runat="server" Text="Lookup Email" />&nbsp;&nbsp;<asp:TextBox 
          ID="tbEmails" runat="server" Width="80%" ReadOnly="true"></asp:TextBox><br />
  <ajax:ModalPopupExtender ID="mpEmails" runat="server" PopupControlID="panelEmails" TargetControlID="btnEmails"
    CancelControlID="btnClose" BackgroundCssClass="modalBackground">
</ajax:ModalPopupExtender>
<asp:Panel ID="panelEmails" runat="server" CssClass="modalPopupAttorneys" align="center">
     <table align="center" width="100%">
     <tr>
        <td>
        <div class="formtext_modal">Email(s) Lookup <img src="images/v2/modal_search.png" alt="Search" /></div><br />
        <asp:Label ID="Label3" runat="server" Width="600px" CssClass="formtext" 
                Text="Add Employees to Email CC line"></asp:Label>
           <div  style="BORDER: thin solid; OVERFLOW: auto; WIDTH: 600px; HEIGHT: 140px">


              <asp:CheckBoxList  ID="cblEmails" runat="server" Width="600px" Height="140px"  SelectionMode="Multiple">
              </asp:CheckBoxList>
            </div>

       </td>  
     </tr>
4

1 に答える 1

2

サーバー側のボタンは常にポスト バックを引き起こします。これを回避する 1 つの方法は、false を返すクライアント クリック関数を追加することです。

OnClientClick="return false;"

編集

同僚が で を定義しCancelControlID="BtnTemplateClose"ましたModalPopupExtender。それがポストバックを抑圧しているものです。CancelControlID も定義されていbtnCloseますが、投稿したコードのどこにも閉じるボタン ( ) が見つかりません。コントロールの閉じるボタンはどこにありますか? 閉じるボタンに ID があることを確認すると、btnClose同僚の閉じるボタンのように機能する可能性が高くなります。

于 2013-04-17T17:13:16.173 に答える