即使在UpdatePanel内部,模式弹出窗口中的单选按钮也会导致回发

时间:2013-12-02 10:24:33

标签: c# asp.net ajax

已发布是我的用户控件的删节代码。我在单选按钮上添加了一个更新面板,并希望执行一个服务器功能,该功能将根据所选内容在顾问下拉列表和参考名称文本框之间切换,而无需完整回发。但单选按钮导致完整的回发。我在这里做错了什么?

<aj:ModalPopupExtender ID="ModalPopup1" runat="server" PopupControlID="Panel1" 
  BackgroundCssClass="PopupBackground"   CancelControlID="closeButton">
</aj:ModalPopupExtender>

<asp:Panel ID="Panel1" runat="server" CssClass="PopupPanel" align="center" style = "display:none">
    <h1 class="PopupHeading">Add New Candidate</h1>


<table class="PopupTable">
<tr>
<td>
<asp:Label ID="firstNameLabel" runat="server"  Text="First Name" CssClass="PopupLabel"></asp:Label>
</td>
<td>
<asp:TextBox ID="firstNameTextBox" runat="server" Font-Size="14px" ></asp:TextBox>
</td>
 <td class="ValidationError">
           <asp:RequiredFieldValidator ID="nameRequiredFieldValidator" runat="server" 
                   ValidationGroup="AddCandidateValidationGroup"
                   ErrorMessage="Name is required" Text="*" 
                   ControlToValidate="firstNameTextBox" CssClass="failureNotification">*</asp:RequiredFieldValidator>
           </td>
</tr>  
<tr>
<td>
<asp:Label ID="emailLabel" runat="server" Text="Email"  CssClass="PopupLabel"></asp:Label>
</td>
<td>
<asp:TextBox ID="emailTextBox" runat="server" Font-Size="14px" ></asp:TextBox>
</td>
 <td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
 ValidationGroup="AddCandidateValidationGroup"
                   ErrorMessage="Email is required" Text="*" 
                   ControlToValidate="emailTextBox" CssClass="failureNotification">*</asp:RequiredFieldValidator>
</td>
<td>
<asp:RegularExpressionValidator ID="emailRegularExpressionValidator" 
                   runat="server" ErrorMessage="Incorrect Email" 
                    ValidationGroup="AddCandidateValidationGroup"
                   ControlToValidate="emailTextBox" 
                   ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
                   CssClass="failureNotification" Text="Incorrect email">
</asp:RegularExpressionValidator> 
</td>
</tr>

 <tr>
 <td>
    <asp:Label ID="referredByLabel" runat="server" Text="Referred By"  CssClass="PopupLabel"></asp:Label>
 </td>
 <td>
 <asp:UpdatePanel ID="updatepanel1" runat="server" UpdateMode="Conditional">
  <ContentTemplate> 
    <asp:RadioButtonList ID="RefConsRadButList" runat="server"  AutoPostBack="true"
     RepeatDirection="Horizontal" OnSelectedIndexChanged="RefConsRadButList_SelectedIndexChanged" CausesValidation="false">
        <asp:ListItem >Consultant</asp:ListItem>
        <asp:ListItem>Referral</asp:ListItem>
        <asp:ListItem Selected="True">N/A</asp:ListItem>
    </asp:RadioButtonList>
     </ContentTemplate>
     <Triggers>
        <asp:AsyncPostBackTrigger ControlID="RefConsRadButList" EventName="SelectedIndexChanged" /> 
    </Triggers>
     </asp:UpdatePanel>
  </td>
 </tr>
 <tr>
  <td>
    <asp:Label ID="consultantNameLabel" runat="server" Text="Consultant Name" Visible="false"  CssClass="PopupLabel"></asp:Label>
 </td>
 <td>
    <asp:DropDownList ID="ConsultantDrDoList" runat="server" Visible="false">
    <asp:ListItem>Select Consultant</asp:ListItem>
    </asp:DropDownList>
 </td>
 </tr>
 <tr>
  <td>
    <asp:Label ID="referenceNameLabel" runat="server" Text="Reference Name" Visible = "false"  CssClass="PopupLabel"></asp:Label>
 </td>
  <td>
   <asp:TextBox ID="ReferralNameTextBox" runat="server" Visible="false"></asp:TextBox>
  </td>
  <td>
  <asp:RequiredFieldValidator ID="refNameRequiredFieldValidator" runat="server" 
            ValidationGroup="AddCandidateValidationGroup"
                   ErrorMessage="Referral name is required" Text="*" 
                   ControlToValidate="phoneTextBox" CssClass="failureNotification">*</asp:RequiredFieldValidator>
  </td>
</tr>
</table>

<br />
  <asp:Button ID="addButton" runat="server" Text="Add"  onclick="addButton_Click"  ValidationGroup="AddCandidateValidationGroup"/>


<asp:Button ID="closeButton" runat="server" Text="Close" />
 <div id="AddStatus">  
 <asp:ValidationSummary ID="ValidationSummary1" runat="server"
 ValidationGroup="AddCandidateValidationGroup"
               HeaderText="Add user failed due to the following errors:" CssClass="PopupValidationError"/>
</div>
</asp:Panel>

1 个答案:

答案 0 :(得分:2)

而不是在modalpopup面板上使用updatepanel,你可以尝试使用后面的代码来实现目的。

                <asp:scriptmanager id="ScriptManager1" runat="server">
                </asp:scriptmanager>

                <asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" BackgroundCssClass="modalBackground"
                CancelControlID="btnCancel" PopupControlID="Panel1" 
                TargetControlID="HiddenField1">
                </asp:ModalPopupExtender>

            <asp:Panel ID="Panel1" runat="server" CssClass="Panel">

            <asp:RadioButtonList ID="RadioButtonList1" runat="server" Height="34px" RepeatDirection="Horizontal"
                                                Width="129px" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged"
                                                AutoPostBack="True">
                                                <asp:ListItem>Option1</asp:ListItem>
                                                <asp:ListItem>Option2</asp:ListItem>
                                            </asp:RadioButtonList>

        <asp:TextBox ID="txt1" runat="server" 
                                            Visible="False"></asp:TextBox>
                                        <asp:TextBox ID="txt2" runat="server"
                                            Visible="False"></asp:TextBox>    

             </asp:Panel>
===========================================    
    Code Behind:
===========================================

     protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (RadioButtonList1.SelectedIndex == 0)
            {
                txt1.Visible = true;
                ModalPopupExtender1.Show();

            }
            else
            {
                txt2.Visible = true;
                ModalPopupExtender1.Show();
            }
        }