SHeinema
SHeinema

Reputation: 634

ASP.NET Refreshing UpdatePanel OnClientClick

I have a couple of update panels, one containing a gridview and another containing a detailsview. I have not been able to get a button in the detailsview to be able to trigger an update of the gridview update panel. I have tried several things (doing it from c# would be ok too..) however here is what I have now... any suggestions? [...I need "confirmButton" to trigger update in "SelectCarUP"]

<asp:UpdatePanel ID="SelectCarUP" runat="server">
  <ContentTemplate>
    <asp:GridView ID="VehiclesGridView" runat="server" AllowPaging="True" 
        AllowSorting="True" DataSourceID="VehiclesEDS" 
        AutoGenerateColumns="False" 
        onselectedindexchanged="VehiclesGridView_SelectedIndexChanged" 
        BackColor="White" BorderColor="#999999" 
        BorderStyle="None" BorderWidth="1px" 
        CellPadding="3" GridLines="Vertical" ShowHeaderWhenEmpty="True">
        <AlternatingRowStyle BackColor="#DCDCDC" />
        <Columns>
           <asp:TemplateField ShowHeader="False">
              <ItemTemplate>
                 <asp:LinkButton ID="GVSelectButton" runat="server" 
                     CausesValidation="False" 
                     CommandName="Select" Text="Select"></asp:LinkButton>
              </ItemTemplate>
           </asp:TemplateField>
           <asp:BoundField DataField="CarNum" HeaderText="Car" ReadOnly="True" 
               SortExpression="CarNum" />
           <asp:BoundField DataField="CurrPassengers" HeaderText="Passengers" 
               ReadOnly="True" SortExpression="CurrPassengers" />
           <asp:BoundField DataField="MaxPassengers" HeaderText="Capacity"  
               ReadOnly="True" SortExpression="MaxPassengers" />
           <asp:BoundField DataField="Status" HeaderText="Status" 
               ReadOnly="True" SortExpression="Status" />
           <asp:BoundField DataField="StartAdd" HeaderText="Pick-Up Address" 
               ReadOnly="True" SortExpression="StartAdd" />
           <asp:BoundField DataField="EndAdd" HeaderText="Drop-Off Address" 
               ReadOnly="True" SortExpression="EndAdd" />
           <asp:BoundField DataField="AvgRideTime" HeaderText="Avg. Ride Time" 
               ReadOnly="True" SortExpression="AvgRideTime" />
        </Columns>
        <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
        <HeaderStyle BackColor="#004812" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#999999" ForeColor="Black" 
           HorizontalAlign="Center" />
        <RowStyle BackColor="#EEEEEE" ForeColor="Black" />
        <SelectedRowStyle BackColor="#C6940D" Font-Bold="True" 
           ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="#C6940D" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#9F770B" />
     </asp:GridView>
  </ContentTemplate>
</asp:UpdatePanel>
<asp:Table ID="Table1" runat="server" CssClass="DefaultTable">
   <asp:TableRow runat="server">
       <asp:TableCell runat="server" Width="50%" 
           VerticalAlign="Top" HorizontalAlign="Left">
           <asp:UpdatePanel ID="detailsUP" runat="server" 
                UpdateMode="Always" ChildrenAsTriggers="True">
              <ContentTemplate>
                  <!--
                     <asp:Label ID="label1" runat="server" 
                        Text="Car To Dispatch: " CssClass="DefaultLabel">
                     </asp:Label>
                     <asp:DropDownList ID="CarsDDL" runat="server"
                        DataSourceID="VehiclesEDS" 
                        DataMember="CarNum" DataTextField="CarNum"
                        AppendDataBoundItems="True" Font-Bold="True">
                           <asp:ListItem Selected="True" Text="-">
                           </asp:ListItem>
                      </asp:DropDownList>
                  -->
                  <asp:DetailsView ID="RideToAssignDV" runat="server"
                      Height="400px" Width="400px" AutoGenerateRows="False"
                      BackColor="White" BorderColor="#999999" 
                      BorderStyle="None" BorderWidth="1px" 
                      CellPadding="3" GridLines="Vertical">
                        <AlternatingRowStyle BackColor="#DCDCDC" />
                        <EditRowStyle BackColor="#008A8C" Font-Bold="True"
                           ForeColor="White" />
                        <Fields>
                            <asp:BoundField DataField="AssignedCar" 
                                HeaderText="Car"             
                                SortExpression="AssignedCar" NullDisplayText="---" />            
                            <asp:BoundField DataField="Name" HeaderText="Name" 
                                SortExpression="Name" NullDisplayText="---" />
                            <asp:BoundField DataField="Phone" HeaderText="Phone" 
                                SortExpression="Phone" NullDisplayText="---" />
                            <asp:BoundField DataField="NumPatrons" HeaderText="Size" 
                                SortExpression="NumPatrons" NullDisplayText="---" />                
                            <asp:BoundField DataField="PickupAddress" 
                                HeaderText="Pickup Address" 
                                SortExpression="PickupAddress" NullDisplayText="---" />
                            <asp:BoundField DataField="DropoffAddress" 
                                HeaderText="Drop-Off Address" 
                                SortExpression="DropoffAddress" 
                                NullDisplayText="---" />
                            <asp:BoundField DataField="CreatedBy" 
                                HeaderText="Created By" 
                                SortExpression="CreatedBy" NullDisplayText="---" />
                            <asp:BoundField DataField="TimeOfCall" 
                                HeaderText="Call Time" 
                                SortExpression="TimeOfCall" ReadOnly="True"
                                NullDisplayText="---" />
                        </Fields>
                        <FooterStyle BackColor="#CCCCCC" ForeColor="Black"
                            BorderStyle="Inset" BorderColor="#C6940D"
                            HorizontalAlign="Center" Height="25px" />
                        <FooterTemplate>
                            <asp:Button ID="confirmButton" runat="server"
                                Text="Confirm" ForeColor="Green" 
                                HorizontalAlign="Center" OnClick="confirmButton_Click"
                                OnClientClick="refreshGV();"/>
                            <asp:Button ID="cancelButton" runat="server" Text="Cancel"
                                ForeColor="Red" HorizontalAlign="Center" 
                                OnClick="cancelButton_Click"
                                OnClientClick="displayTopTen();" />
                        </FooterTemplate>
                        <HeaderStyle BackColor="#004812" Font-Bold="True" />
                        <PagerStyle BackColor="#999999" ForeColor="Black" />
                        <RowStyle BackColor="#EEEEEE" ForeColor="Black" />                            
                 </asp:DetailsView>
          </ContentTemplate>
     </asp:UpdatePanel>
</asp:TableCell>

<script type="text/javascript">
function refreshGV() {
             __doPostBack("<%= SelectCarUP.ClientID %>", "");
         }    
</script>

Upvotes: 1

Views: 3051

Answers (1)

Amar Palsapure
Amar Palsapure

Reputation: 9680

Try doing

ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(this.confirmButton);

Refer this ASP.net forum

OR

On your button click event handler inside codebehind call SelectCarUP.Update() It should update the SelectCarUP panel. For more info refer article on MSDN.

OR

In code behind you can add trigger for this button (not sure about this)

SelectCarUP.Triggers.Add(new AsyncPostBackTrigger()
{
    ControlID = confirmButton.UniqueID,
    EventName = "Click"
});

Hope this works for you.

Upvotes: 3

Related Questions