flyersun
flyersun

Reputation: 917

Update Panel not working correctly?

I have added two update panels to my page. I'm trying to update the first panel but not the second. The second panel contains validation controls which seem to be kicking in no matter what I try.

Code

<asp:ToolkitScriptManager runat="server" ID="ScriptManager" />
  <asp:UpdatePanel ID="updatePnl" runat="server" UpdateMode="Conditional">
    <ContentTemplate>

       <asp:label ID="NoConsignments" runat="server" ForeColor="red" />
       <br />
       <asp:TextBox ID="StartDate" runat="server" />  <asp:TextBox ID="EndDate" runat="server" /> <asp:Button ID="Dates" OnClick="btDates" runat="server" Text="Search" />
       <asp:calendarextender ID="Calendarextender2" targetcontrolid="StartDate" Format="dd/MM/yyyy" runat="server"></asp:calendarextender>
      <asp:calendarextender ID="Calendarextender3" targetcontrolid="EndDate" Format="dd/MM/yyyy" runat="server"></asp:calendarextender>
   </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Dates" />
    </Triggers>
 </asp:UpdatePanel>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
    </ContentTemplate>
    </asp:UpdatePanel>

I've left out some of the middle code of there is alot. If you would like any more code please let me know.

Am I missing something? or is this not the way that update panels should be used?

Thanks you so much for any help you can provide

Upvotes: 0

Views: 1585

Answers (3)

Tim Schmelter
Tim Schmelter

Reputation: 460048

You have to specify ValidationGroups for your Buttons and Validators, f.e. Panel1 for your Searchbutton and Panel2 for your Validators in second UpdatePanel.

<asp:Button ID="Dates" ValidationGroup="Panel1" runat="server" Text="Search" />

....

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
    <asp:TextBox ID="TextBox1" runat="server" />
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
          ValidationGroup="Panel2" ErrorMessage="RequiredFieldValidator"
          ControlToValidate="TextBox1" />
    </ContentTemplate>
</asp:UpdatePanel>

Upvotes: 1

Giles Smith
Giles Smith

Reputation: 1962

I haven't used UpdatePanels for a while, and you haven't included the mark up for the validators in the second panel.

However it looks to me like you might not be adding groups to your validation see this tutorial

e.g.:

<body>
  <form id="form1" runat="server">
    <div>
      <asp:TextBox ID="TextBox1" runat="server" ValidationGroup="First"/>
      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
             ValidationGroup="First" ErrorMessage="TextBox1 should not be blank" 
             ControlToValidate="TextBox1"/>

      <asp:Button ID="Submit1" runat="server" ValidationGroup="First"
             Text="Submit 1"/>

      <asp:TextBox ID="TextBox3" runat="server" ValidationGroup="Second"/>
      <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
             ErrorMessage=" TextBox3 should not be blank" 
             ControlToValidate="TextBox3" ValidationGroup="Second"/>

      <asp:Button ID="Submit2" runat="server" ValidationGroup="Second"
             Text="Submit 2"/>
    </div>
  </form>
</body>

Hope this helps and I haven't missed the point.

Upvotes: 1

Graham Clark
Graham Clark

Reputation: 12966

I would guess that the validation controls in the second UpdatePanel are firing their client-side validation methods (so the update panel isn't posting back, which is correct).

You might be able to get around this by using the ValidationGroup property - assign the validation controls in the first update panel to one validation group (e.g. "ValidationGroupA"), and the validation controls in the second update panel to another validation group.

Upvotes: 2

Related Questions