C#的 listview如何实现分页显示数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#的 listview如何实现分页显示数据相关的知识,希望对你有一定的参考价值。

因为要做一款检测软件,需要将几千个数据都遍历显示出来,想在listview中显示,但是无奈数据量还是太大,想做到分页显示数据,如何代码实现,网上关于listview分页都是基于数据库的操作,不通过数据库如何实现分页,谢谢各位大神。

参考技术A 总结了以下几种分列显示二维数组的方法,和大家分享。
一、在listview中分列显示distionary的泛型类的内容。
Dictionary dic = new Dictionary();
dic.Add(1, "刘备");
dic.Add(2, "张飞");
dic.Add(3, "赵去");
dic.Add(4, "关羽");
dic.Add(5, "姜维");
listView1.Clear();//清空先前内容
listView1.View = View.Details;//分列显示
listView1.Columns.Add("编号");
listView1.Columns.Add("姓名");
foreach (var ee in dic)

ListViewItem gg = new ListViewItem(new string[]ee.Key.ToString(),ee.Value);//这是至关重要的一点。
listView1.Items.Add(gg);

二、在listview中分列显示二维数组
(一)我们先建立一个二维数组
listView1.View = View.Details;
listView1.Columns.Add("姓名");
listView1.Columns.Add("语文");
listView1.Columns.Add("数学");
listView1.Columns.Add("科学");
listView1.Columns.Add("英语");
string[,] chengji = new string[4, 5];
chengji[0, 0] = "小王";
chengji[0, 1] = "90";
chengji[0, 2] = "98";
chengji[0, 3] = "88";
chengji[0, 4] = "92";
chengji[1, 0] = "小李";
chengji[1, 1] = "92";
chengji[1, 2] = "94";
chengji[1, 3] = "98";
chengji[1, 4] = "93";
chengji[2, 0] = "小黄";
chengji[2, 1] = "91";
chengji[2, 2] = "92";
chengji[2, 3] = "93";
chengji[2, 4] = "94";
chengji[3, 0] = "小张";
chengji[3, 1] = "95";
chengji[3, 2] = "94";
chengji[3, 3] = "93";
chengji[3, 4] = "92";
(二)下面是几种分列显示二维数组的几种方法。
1、第一种分列显示方法:
listView1.Clear();
for (int i = 0; i < chengji.GetLength(0); i++)

ListViewItem bb = new ListViewItem(new string[] chengji[i, 0], chengji[i, 1], chengji[i, 2], chengji[i, 3], chengji[i, 4] );
listView1.Items.Add(bb);

2、第二种分列显示方法:
上面的listview分列显示还可以用下面的方法。
listView1.Clear();
ListViewItem cj;
for (int i = 0; i < chengji.GetLength(0); i++)

cj = new ListViewItem(chengji[i,0]);
cj.SubItems.Add(chengji[i, 1]);
cj.SubItems.Add(chengji[i,2]);
cj.SubItems.Add(chengji[i, 3]);
cj.SubItems.Add(chengji[i, 4]);
listView1.Items.Add(cj);
3、第三种分列显示方法:
如果我们把二维数组转化为一维数组(即结合上面两种方法)还可以用下面的方法分列显示。
listView1.Clear();
ListViewItem cjj;
string[] sstr = new string[chengji.GetLength(1)];
for (int i = 0; i < chengji.GetLength(0); i++)

for (int j = 0; j < chengji.GetLength(1); j++)

sstr[j] = chengji[i, j];

cjj = new ListViewItem(sstr);
listView1.Items.Add(cjj);
参考技术B aspnetpager分页控件
不要用系统自带的那个分页控件
aspnetpager分页控件这个可以分页查询的,可操作性很大
你去设计这个控件的作者那个理解一下
百度杨涛追问

你好,大致搜了一下,发现网上关于aspnetpager分页控件的使用多是在web上,基于winforms上的很少呀??

本回答被提问者采纳

winform中的DataGridView如何实现分页(C#)

使用四个button控件,分别实现首页、上一页、下一页、最后一页查询功能,并且每页只显示12条数据。

winfrom是应用程序 根本就不存在分页这个概念。
你只需要点击上一页 下一页 最后一页、首页 这些按钮事件里面 控制一下参数即可。‘
给你写个简单的分页语句:
select top 12 * from books where id not in(select top 12 id from books order by id) order by id
前面这个12意思是 查询前12条,后面这个12表示 不等于前12条。
合起来的意思 就是不等于前12条的前12条,也就是说 这个是第二页。
如果你想翻到第一页 后面12改为0即可。如果翻到第三页 后面12改为24.

这个很简单,不过你数据量过万 就还是考虑一下吧,这种语句效率不算很好。
参考技术A 这个是我在asp中的,不过你改改就该能用,希望对你有帮助。
前台代码,写在gridview的代码里,不过我没用按钮,用的是标签:
<PagerTemplate>
<asp:Label ID="lblPage" runat="server" Text='<%# "第" + (((GridView)Container.NamingContainer).PageIndex + 1) + "页/共" + (((GridView)Container.NamingContainer).PageCount) + "页" %> '></asp:Label>
<asp:LinkButton ID="lbnFirst" runat="Server" Text="首页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'
CommandName="Page" CommandArgument="First"></asp:LinkButton>
<asp:LinkButton ID="lbnPrev" runat="server" Text="上一页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'
CommandName="Page" CommandArgument="Prev"></asp:LinkButton>
<asp:LinkButton ID="lbnNext" runat="Server" Text="下一页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>'
CommandName="Page" CommandArgument="Next"></asp:LinkButton>
<asp:LinkButton ID="lbnLast" runat="Server" Text="尾页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>'
CommandName="Page" CommandArgument="Last"></asp:LinkButton>
到第<asp:TextBox Width="30" runat="server" ID="inPageNum"></asp:TextBox>页
<asp:Button ID="Button1" Text="GO" CommandName="go" runat="server" />
</PagerTemplate>

后台代码,在gridview的相应事件里写:
protected void Show_PageIndexChanging(object sender, GridViewPageEventArgs e)

this.gridviewCus.PageIndex = e.NewPageIndex;
BindGridView();//数据源绑定方法
参考技术B 介意你不要用四个按钮的形式做分页(因为我以前也是这么做的,结果发现不理想),你可以到网上下载一个。net的分页控件。配合该控件的分页代码,网上也是有很多的,实在差不多代码,在问我。我去找找以前做的。本回答被提问者采纳 参考技术C 很崩溃。你在ASP中做分页也许是考虑数据量大一次显示不方便,但是在winform中主要做没意义,通常来讲数据量在10W之内的时候显示不影响的。而且VS带的数据显示控件中也没有分页的功能。如果一定要分页,也只是把数据源进行分段,然后根据按钮的要求进行数据绑定。winform数据分页非常不推荐。 参考技术D 你可以在sql语句里实现分页呀,在自己添加或制作翻页控件

以上是关于C#的 listview如何实现分页显示数据的主要内容,如果未能解决你的问题,请参考以下文章

WPF 实现 DataGrid/ListView 分页控件(转)

WPF 实现 DataGrid/ListView 分页控件(转)

如何使用C#实现Listview显示图片与文字

如何在Android listview中实现分页

winform中的DataGridView如何实现分页(C#)

C# wpf 中 一个窗体中的texbox内容显示另一个窗体中的listview中的内容。如何实现