winform窗体中的listview怎么实现分页,数据都读出来了,如何在显示时分页,求详细代码

 我来答
匿名用户
2013-05-26
展开全部
namespace seperatePage
{
public partial class Form1 : Form
{
string sql;
SqlConnectionStringBuilder bldr;
SqlConnectioncn;
int totalcount = 0;//记录总共的记录数
static int page =0; //记录现在翻到第几页了
public Form1()
{
InitializeComponent();
linkDatabase();
}
public void linkDatabase()
{//连接数据库,打开连接
bldr = new SqlConnectionStringBuilder();
bldr.DataSource = "125.89.255.50";
bldr.InitialCatalog = "shortmessage";
bldr.IntegratedSecurity = false;
bldr.UserID = "shortmessage";
bldr.Password = "shortmessageuser";
cn = new SqlConnection(bldr.ConnectionString);
cn.Open(); }
public void closeDatabase()
{
//关闭连接
cn.Close();
}
public DataSet selectData(String sql)
{
//查询数据集
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sql, cn);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Fill(ds);
return ds;
}
private void Form1_Load(object sender, EventArgs e)
{
//窗体加载的时候,前5条记录是显示的。这时候,“下一页”是可用的,“上一页”是不可用的。
nextPage.Enabled = true ;
prevPage.Enabled = false;
listView1.GridLines = false;
listView1.Columns.Add("name");
listView1.Columns.Add("age");
listView1.Columns.Add("rollno");
listView1.View =View.Details;
listView1.Items.Clear();
sql = "select * from test";
DataSet ds_one = selectData(sql);
DataTable dt_one = ds_one.Tables[0];
for (int i = 0; i < dt_one.Rows.Count; i++)
{
totalcount = totalcount+1;//查看一共有多少条记录。
}
sql = "select top 5 name,age,rollno fromtest "; //显示前5条信息
DataSet ds = selectData(sql);
write_listview(ds); //这个函数的作用是用来往listview中写数据的。

}
private void next_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)
{
//当点击下一页时,上一页是可用的。
prevPage.Enabled = true;
//记录有可能是被5整除的,有可能是不能被5整除,所以判断下一页是否可用需要分情况
if (totalcount % 5 == 0)
{
if (page >= totalcount / 5 - 2)
{
nextPage.Enabled = false;
prevPage.Enabled = true;
}
}
else
{
if (page >= totalcount / 5 - 1)
{
nextPage.Enabled = false;
prevPage.Enabled = true;
}
}
page = page +1;
listView1.Items.Clear();
sql = "select top 5name,age,rollno from test where rollno not in (select top"+page*5+" rollno fromtest)";
DataSet ds = selectData(sql);
write_listview(ds);
}
private void linkLabel2_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)
{
nextPage.Enabled = true;
page = page -1;
if (page <= 0)
{
nextPage.Enabled = true ;
prevPage.Enabled = false ;
}
listView1.Items.Clear();
sql = "select top 5name,age,rollno from test where rollno not in (select top " + page* 5 + " rollno fromtest)";

DataSet ds = selectData(sql);
write_listview(ds);
}
private void firstPage_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)
{
listView1.Items.Clear();
prevPage.Enabled = false;
nextPage.Enabled = true;
sql = "select top 5 name,age,rollno from test";
page =0;//必须要写,否则page会出现问题。
DataSet ds = selectData(sql);
write_listview(ds);
}
private void write_listview(DataSet ds)
{//用于完成向listview添加信息。
ListViewItem lv = null;
DataTable dt = ds.Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
lv = new ListViewItem(dt.Rows[i]["name"].ToString());
lv.SubItems.Add(dt.Rows[i]["age"].ToString());
lv.SubItems.Add(dt.Rows[i]["rollno"].ToString());
listView1.Items.Add(lv);
}
}
private void lagePage_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)
{
if (totalcount % 5 == 0)
{
page = totalcount / 5 - 1;
}
else
{
page = totalcount / 5;
}
nextPage.Enabled = false;
prevPage.Enabled = true;
listView1.Items.Clear();
sql = "select top 5 name,age,rollno from test where rollno not in(select top " + page * 5 + " rollno fromtest)";
DataSet ds = selectData(sql);
write_listview(ds);
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式