Hi shapper ,
shapper:
Can I make a Data Pager to work with a ListView without using some kind of Data Source like LinqDataSource?
Yes, you can.
See my sample,
<asp:ListView ID="lvItems" runat="server"
ItemPlaceholderID="layoutTemplate"
onpagepropertieschanged="lvItems_PagePropertiesChanged" onpagepropertieschanging="lvItems_PagePropertiesChanging"
>
<LayoutTemplate>
<div id="layoutTemplate" runat="server" />
</LayoutTemplate>
<ItemTemplate>
<div class="itemdisplay">
<b>
<asp:Label ID="lblid" runat="server" Text='<%# Eval("RegionID") %>'></asp:Label></b><br />
<asp:Label ID="lblreg" runat="server" Text='<%# Eval("RegionDescription")%>'></asp:Label></div>
</ItemTemplate>
</asp:ListView>
<p>
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="lvItems" PageSize="3">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True"
ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
</p>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
private void bind()
{
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\NORTHWND.MDF;Integrated Security=True;User Instance=True");
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM [Region]", con);
sda.Fill(ds);
this.lvItems.DataSource = ds.Tables[0];
lvItems.DataBind();
}
protected void lvItems_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
this.DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
bind();
}
protected void lvItems_PagePropertiesChanged(object sender, EventArgs e)
{
}