I cannot maintain the scroll position of my page having Asynchronous partial rendering.
Here is a sample of my aspx page:
<%# Page Language="C#" MasterPageFile="~/Main.master" AutoEventWireup="true" CodeFile="Page.aspx.cs" Inherits="Page_Page" MaintainScrollPositionOnPostback="true"%>
<asp:Content ID="ContentCo" ContentPlaceHolderID="Cph" runat="Server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick"/>
</Triggers>
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="1"></asp:Timer>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer2" EventName="Tick"/>
</Triggers>
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Timer ID="Timer2" runat="server" OnTick="Timer2_Tick" Interval="1"></asp:Timer>
<asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer3" EventName="Tick"/>
</Triggers>
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Timer ID="Timer3" runat="server" OnTick="Timer3_Tick" Interval="1"></asp:Timer>
<asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer4" EventName="Tick"/>
</Triggers>
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Timer ID="Timer4" runat="server" OnTick="Timer4_Tick" Interval="1"></asp:Timer>
<asp:UpdatePanel ID="UpdatePanel5" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer5" EventName="Tick"/>
</Triggers>
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Timer ID="Timer5" runat="server" OnTick="Timer5_Tick" Interval="1"></asp:Timer>
<asp:UpdatePanel ID="UpdatePanel6" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer6" EventName="Tick"/>
</Triggers>
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Timer ID="Timer6" runat="server" OnTick="Timer6_Tick" Interval="1"></asp:Timer>
</asp:Content>
and I add all the controls in aspx.cs for each UpdatePanel like:
var us = LoadControl("~/Controls/Control1.ascx");
this.Controls.Add(us1);
The Asynchronously Partial rendering works, but each time that a control is rendering it goes at the top of the page,
How can i fix that issue?
I think I had the same issue and resolved by overwriting the javascript scrollTo function. I inserted the below in the page
<script type="text/javascript">
window.scrollTo = function () { }
</script>
Related
A control with ID 'contactButton' could not be found for the trigger in UpdatePanel 'contactUpdatePanel'.
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
<asp:UpdatePanel ID="contactUpdatePanel" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:ListView ID="contactList" runat="server">
<ItemTemplate>
<asp:Panel runat="server">
<asp:Label ID="contactLabel" runat="server" Text='<%# Bind("Number") %>' ></asp:Label>
<asp:Button OnClick="contactButton_Click" ID="contactButton" runat="server" Text="Assign"/>
</asp:Panel>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="contactButton" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
Just remove this line because Listview and button are not outside the update panel so it will work automatically.
<Triggers>
<asp:AsyncPostBackTrigger ControlID="contactButton" EventName="Click" />
</Triggers>
Your final code
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
<asp:UpdatePanel ID="contactUpdatePanel" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:ListView ID="contactList" runat="server">
<ItemTemplate>
<asp:Panel runat="server">
<asp:Label ID="contactLabel" runat="server" Text='<%# Bind("Number") %>' ></asp:Label>
<asp:Button OnClick="contactButton_Click" ID="contactButton" runat="server" Text="Assign"/>
</asp:Panel>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
This is my code:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="txtEmailUser" TextMode="SingleLine" placeholder="Enter Email" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ValidationGroup="Panel1" ErrorMessage="RequiredFieldValidator"
ControlToValidate="txtEmailUser" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="buttonBuy" />
</Triggers>
</asp:UpdatePanel>
</div>
<br />
<asp:Button runat="server" ValidationGroup="Panel1" OnClick="buttonBuy_Click" ID="buttonBuy" width: 200px;"Text="Buy" />
I've tried many ways but still not working.
How can I solve it?
My UpdatePanel
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods="true"></asp:ScriptManager>
<asp:UpdatePanel ID="up1" UpdateMode="Conditional"
runat="server" ChildrenAsTriggers="false">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtName"
EventName="TextChanged"/>
</Triggers>
<ContentTemplate>
<asp:TextBox ID="txtName" runat="server"
AutoPostBack="true" OnTextChanged="txtName_TextChanged" />
<asp:TextBox ID="txtPhone" runat="server" AutoPostBack="true" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
Why isn't the value of my textbox (txtName) getting sent back to the server when it loses focus? The async postback happens but no value.
EventName should be EventName="TextChanged".
TextChanged is default for TextBox control, so you don't even need to set it.
AsyncPostBackTrigger.EventName Property
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods="true"></asp:ScriptManager>
<asp:UpdatePanel ID="up1" UpdateMode="Conditional"
runat="server" ChildrenAsTriggers="false">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtName"
EventName="TextChanged"/>
</Triggers>
<ContentTemplate>
<asp:TextBox ID="txtName" runat="server"
AutoPostBack="true" OnTextChanged="txtName_TextChanged" />
<asp:TextBox ID="txtPhone" runat="server" AutoPostBack="true" />
</ContentTemplate>
</asp:UpdatePanel>
Code Behind
protected void txtName_TextChanged(object sender, EventArgs e)
{
string name = txtName.Text;
}
How to stop UpdatePanel when I click link button from causing whole page postback?
UpdatePanel code:
<asp:UpdatePanel ID="panel_update" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="comment_sub" runat="server" Text='<%#Eval("review_headline") %>/>
<asp:Repeater ID="repeat" runat="server" OnItemDataBound="repeat_ItemDataBound" >
<HeaderTemplate>
<div class="top_review">
<h3>TOP REVIEWS</h3>
<a class="view_all">View all reviews(<%=top_view%>)</a>
</div>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblSubject" runat="server" Text='<%#Eval("commented_by") %>' Font-Bold="true" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID ="link1" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID ="link2" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID ="link3" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
Set ChildrenAsTriggers="true" on your UpdatePanel control. closing tag for update panel should be
And the tip is the “DropDownList1” didn't find “DropDownList1_SelectedIndexChanged”
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem>1</asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="DropDownList1_SelectedIndexChanged" />
</Triggers>
Please tell me How to make it work!
you need AutoPostBack=True
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">