采用以下示例...一个带有a ListView和a 的页面,DataPager用于分页ListView:
代码背后:
protected void Page_Load(object sender, EventArgs e)
{
MyList.DataSource = GetSomeList();
MyList.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
资源:
<asp:ListView ID="MyList" runat="server">
<% //LayoutTemplate and ItemTemplate removed for the example %>
</asp:ListView>
<asp:DataPager ID="ListPager" PagedControlID="MyList" runat="server" PageSize="10">
<Fields>
<asp:NumericPagerField />
</Fields>
</asp:DataPager>
Run Code Online (Sandbox Code Playgroud)
问题DataPager在于它始终是绑定的后盾.
例如,当页面加载它在页码1时.然后当您单击第3页时,它在回发后保留在第1页.然后你点击第5页,在回发后它在第3页找到自己...然后你点击第6页,它在第5页找到自己......依此类推.
为什么分页不按预期工作?
我仍然试图通过Silverlight和RIA Services来实现我的目标,当然还要从一些更"有趣"的东西开始,比如网格和智能分页.我可以连接到RIA Services(使用自行开发的ORM,而不是L2S或EF),在网格上获取数据,并连接到DataPager.域服务与本土ORM一起运行良好,至少对于查询而言.(仍在使用完整的CRUD.)但是,仍然存在问题:
为了支持用户应用程序,除了智能分页(仅运行查询显示所需的行)和分组之外,我还需要用户控制的排序和过滤.
到目前为止,我在DataGrid或DataPager中没有看到任何外部化这些功能的内容,因此可以将过滤,排序和分页参数传递给服务器以构建适当的查询.
数据集可能非常大; 我选择用于原型制作工作的我的表可以在一些客户中拥有多达35,000个条目,我确信还有其他更大的表格,我将不得不在某个时候处理.因此,"智能寻呼"方面至关重要.
我们欢迎您的想法,建议,指导和nerf砖.
我正在尝试使用DataPager进行服务器端分页.这是我的代码
<asp:DataPager ID="pgrFooBars" PagedControlID="lvFooBars"
QueryStringField="page" runat="server" >
<Fields>
<asp:NumericPagerField />
</Fields>
</asp:DataPager>
Run Code Online (Sandbox Code Playgroud)
代码背后
protected void Page_Load(object sender, EventArgs e)
{
ConfigureBlogPostListView();
}
private void ConfigureBlogPostListView()
{
int pageNum;
int.TryParse(Request.Params["page"], out pageNum);
int pageSize = 20;
PagedList<IFooBar> FooBars = FooService.GetPagedFooBars(
new PagingSettings(pageNum, pageSize));
ListViewPagedDataSource ds = new ListViewPagedDataSource();
ds.AllowServerPaging = true;
ds.DataSource = FooBars;
ds.MaximumRows = pageSize;
ds.StartRowIndex = pageNum;
//TotalCount is the total number of records in the entire set, not just those loaded.
ds.TotalRowCount = FooBars.TotalCount;
lvFooBars.DataSource = ds; …Run Code Online (Sandbox Code Playgroud) 我正在使用Twitter Bootstrap和ASP.Net C#Webforms构建一个网站.我的页面上有一个ListView,它绑定了一个DataPager,但我需要改变.Net呈现DataPager的HTML的方式.
目前,所有寻呼机项目都显示如下:
<div class="clearfix pagination pagination-centered"> <span id="cpBody_dpListing"> <a class="aspNetDisabled">First</a> <span>1</span> <a href="javascript:__doPostBack('ctl00$cpBody$dpListing$ctl02$ctl01','')">2</a> <a href="javascript:__doPostBack('ctl00$cpBody$dpListing$ctl03$ctl00','')">Last</a> </span> </div>
Run Code Online (Sandbox Code Playgroud)
但是我需要将所有项目包装在无序列表中,而不是跨度和标签.我目前的加价看起来像这样:
<div class="clearfix pagination pagination-centered">
<asp:DataPager ID="dpListing" runat="server" PagedControlID="lvListing" PageSize="10" OnPreRender="dpListing_PreRender">
<Fields>
<asp:TemplatePagerField>
<PagerTemplate>
<asp:BulletedList ID="listPages" runat="server" DisplayMode="LinkButton" OnClick="listPages_Click"></asp:BulletedList>
</PagerTemplate>
</asp:TemplatePagerField>
<asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="true" ShowNextPageButton="false" ShowPreviousPageButton="false" />
<asp:NumericPagerField PreviousPageText="< Prev 10" NextPageText="Next 10 >" ButtonCount="10" />
<asp:NextPreviousPagerField ButtonType="Link" ShowLastPageButton="true" ShowNextPageButton="false" ShowPreviousPageButton="false" />
</Fields>
</asp:DataPager>
Run Code Online (Sandbox Code Playgroud)
我不知何故需要覆盖NextPreviousPagerField和NumericPagerField,因此它们输出<li>标签而不是<span>和<a>.
我在我的web项目中使用ListView和DataPager进行分页.它工作正常,但生成的分页HTML只是一个包含一些超链接的span.
我想自定义HTML并在无序列表中显示链接(ul).
有人知道如何做到这一点?我能想到的一种方法是CSSFriendly适配器,但如果有更简单的方法,我不想这样做.
编辑:有人可以帮助我完成在模板中创建控件所需的确切步骤吗?抱歉愚蠢,但我无法想象这一部分,尽管广泛的谷歌搜索.
我在Silverlight应用程序中使用DataPager控件.我为不同的DataGrids设置了不同的寻呼机,并希望为所有这些事件使用相同的事件处理程序来处理PageIndexChanged事件.委托必须将EventArgs对象作为参数.我可以使用此对象"返回"触发事件的控件吗?
我有一个标准的ASP.Net DataPager,带有标准的ListView(使用DataTable作为数据源).
当我在设计代码中设置PageSize ="24"时:
<asp:DataPager runat="server" ID="DataPager1" PagedControlID="ListView1" QueryStringField="page" PageSize="24" >
Run Code Online (Sandbox Code Playgroud)
分页的工作方式与宣传的一样.
但是,当我在代码中更改它时,在Page_Load中,例如:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
DataPager1.PageSize = 48
End Sub
Run Code Online (Sandbox Code Playgroud)
分页停止完全工作,而初始加载的数据集确实是48项.
我在代码中看不到会影响这一点的任何内容,所以我想知道我是否遗漏了一些东西 - 我应该改变别的东西吗?
问候
武
我有一个webform,它使用gridview控件来显示搜索操作的结果.
我想利用webform中的分页功能.但是众所周知,gridview分页是一个客户端分页,它将所有已经选择的记录传送给客户端.客户端分页的意思是客户端(页面)逐页显示记录,但每次用户单击页面链接以浏览记录时,所有记录都从数据源中选择.
如何使用gridView和datapager来实现服务器端分页?或者通过配置我们的查询逐页获取记录的任何其他解决方案?
我有一个ListView,我正在使用DataPager进行分页.我想在Page_Load上设置寻呼机的初始页面.我已经尝试了DataPager.SetPageProperties方法,但它没有做我需要的.以下是我调用此方法的方法:
dataPager.SetPageProperties(3, dataPager.TotalRowCount, false);
Run Code Online (Sandbox Code Playgroud)
上面的行修剪数据源以从第三个项开始,并且分页仍然从1开始.这不是我想要的.我想保留整个项目列表,然后跳转到列表中的特定页面.
我应该使用DataPager和/或ListView的另一个属性和/或方法吗?
任何帮助将不胜感激.
谢谢!
我正在使用DataPager对ListView进行分页,我将NumericPagerField的ButtonCount属性设置为5,以将要显示的页码的最大数量限制为5.但是,当这样做时,当超过5个页面时,它显示1或2个椭圆(...).有没有办法对这些椭圆进行设计或使它们消失?
编辑:我想澄清一点.我想要做的是当总页数超过ButtonCount属性时隐藏在DataPager中的省略号(可能通过样式显示:无,但我找不到为它设置css样式的方法).请看下面的图片

这是我的代码:
<asp:DataPager ID="datapager" PageSize="16" PagedControlID="someId" runat="server"
QueryStringField="page">
...
<Fields>
<asp:NumericPagerField RenderNonBreakingSpacesBetweenControls="false" NumericButtonCssClass="someClass other"
CurrentPageLabelCssClass="someClass current" ButtonCount="4" />
</Fields>
...
</asp:DataPager>
Run Code Online (Sandbox Code Playgroud)
如您所见,我为数字按钮和页面标签设置了css类,但它不适用于省略号.所以我无法在样式表中选择省略号.任何的想法?
好的,所以这里是设置.我正在构建一个页面,其中包含一个listview,一个datapager和3个datapagerfield(2个NextPreviousPagerField,1个NumericPagerField),以及一个objectdatasource来将所有这些结合在一起.
在我将一个断点放入objectdatsource控件中指定的SelectMethod之前,一切正常.对于每个datapagerfield控件,它似乎都在调用selectmethod和selectcount方法.因此,无论何时用户进行分页,它都会调用数据库6次而不是2次(我没有打开缓存atm).如果我删除一个datapagerfield,它将删除2个调用.
现在这是在VS2008中的asp.net 3.5 SP1中构建的.当我将相同的代码文件复制到asp.net 4.0 VS2010解决方案时,它的重复调用似乎已经消失.
这是asp.net 3.5 SP1中的错误吗?
提前致谢
datapager ×11
asp.net ×9
c# ×3
listview ×3
ellipsis ×1
gridview ×1
pagination ×1
paging ×1
server-side ×1
silverlight ×1
vb.net ×1