【问题标题】:Radiobutton in modalpopup causing postback even when inside UpdatePanel即使在 UpdatePanel 内,modalpopup 中的单选按钮也会导致回发
【发布时间】:2013-12-02 10:24:33
【问题描述】:

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

<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>

【问题讨论】:

    标签: c# asp.net ajax


    【解决方案1】:

    您可以尝试从后面的代码中进行一些操作来达到目的,而不是在 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();
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2014-11-14
      • 2015-06-06
      • 2014-01-03
      相关资源
      最近更新 更多