I have a DataPager control that I am using with my ListView and when the page loads the pager shows the first, next, last, preivous, and 10 pages but when I click any of the buttons or the hyperlinks for a page nothing happens, no matter how many times I click. I have heard that you have to do something in preredender but have not see any code on how this works. Can anyone tell me what code I am supposed to put in prerender (and how to call the prerender) if that is the solution and if it is not how to get my datapager working?
<asp:UpdatePanel ID="upSearchResults" runat="server">
<ContentTemplate>
<asp:Label ID="lblErrorMSG" CssClass="ErrorText" runat="server" />
<asp:Panel ID="plSearchResults" runat="server">
<table style="width: 100%" border="1">
<tr>
<td>
<asp:Literal ID="lblTitleRow" runat="server" />
</td>
<td>
<asp:Literal ID="lblDescriptionRow" runat="server" />
</td>
<td class="TableSelectButton">
<asp:Button ID="btnAddNewItem" Text="Select" runat="server" />
</td>
</tr>
<asp:ListView ID="lvSearchResults" runat="server">
<LayoutTemplate>
<tr id="itemPlaceHolder" runat="server" />
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("Title")%>
</td>
<td>
<%#Eval("Descript")%>
</td>
<td class="TableSelectButton">
<asp:Button ID="btnEditItem" Text="Select" PostBackUrl='<%#String.Format("{0}.aspx?ID={1}&SectionID={2}", Eval("PageName"), Eval("ID"), ddlMediaTitle.SelectedValue.ToString())%>' runat="server" />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
</table>
</asp:Panel>
<div class="Center">
<asp:DataPager ID="dpSearchResults" PagedControlID="lvSearchResults" PageSize="10" runat="server">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowNextPageButton="false" ShowFirstPageButton="true" ShowLastPageButton="false" ShowPreviousPageButton="true" />
<asp:NumericPagerField ButtonCount="10" />
<asp:NextPreviousPagerField ButtonType="Button" ShowNextPageButton="true" ShowFirstPageButton="false" ShowLastPageButton="true" ShowPreviousPageButton="false" />
</Fields>
</asp:DataPager>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
I was able to get your code sample to work by doing two things. First in the list view control I added the OnPagePropertiesChanged event and bound the data again.
<asp:ListView ID="lvSearchResults" runat="server"
OnPagePropertiesChanged="lvSearchResults_PagePropertiesChanged">
In the code behind:
protected void lvSearchResults_PagePropertiesChanged(object sender, EventArgs e)
{
//bind the lvSearchResults
}
In order to get the update panel to work I used this trigger instead:
<Triggers>
<asp:AsyncPostBackTrigger ControlID="lvSearchResults"
EventName="PagePropertiesChanged" />
</Triggers>
One recommendation I have is to add update panels absolutely last after you have everything working. They seem to hide a lot of problems and make them more difficult to solve.
Enjoy!