• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

c#的listview实现分页效果

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

打算要实现的效果是:

由于listview控件本身没有分页的功能,为了达到这么目的,

方法一:我们可以结合其他空间来完成,但是对framework要求的版本也比较高;

方法二:通过sql语句来完成,通过sql语句完成分页。

这里我们采用第二种方法:

namespace seperatePage
{
    public partial class Form1 : Form
    {
        string sql;
        SqlConnectionStringBuilder bldr;
        SqlConnection cn;      
        int totalcount = 0;//记录总共的记录数
        static int page = 0;   //记录现在翻到第几页了  
        public Form1()
        {
            InitializeComponent();
            linkDatabase();
        }
        public void linkDatabase()
        {//连接数据库,打开连接
            bldr = new SqlConnectionStringBuilder();
            bldr.DataSource = "222.195.150.228";
            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 from test ";  //显示前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 5 name,age,rollno from test where rollno not in (select top "+page*5+" rollno from test)";           
            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 5 name,age,rollno from test where rollno not in (select top " + page * 5 + " rollno from test)";
          
            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 l = null;
            DataTable dt = ds.Tables[0];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                l = new ListViewItem(dt.Rows[i]["name"].ToString());
                l.SubItems.Add(dt.Rows[i]["age"].ToString());
                l.SubItems.Add(dt.Rows[i]["rollno"].ToString());
                listView1.Items.Add(l);
            }
        }
        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 from test)";          
            DataSet ds = selectData(sql);
            write_listview(ds);          
        }
    }
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#的排序 - sunstar1989发布时间:2022-07-10
下一篇:
Effective C# Item25:尽可能将类型实现为可序列化的类型发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap