WPF中datagrid分页

namespace WpfApplication1
{
    /// <summary>
    /// 枚举类型
    /// </summary>
    public enum sex
    {
        男,
        女
    };


    public class company
    {
        public string companyname;
        public string name;
        public string sex;
        public int age;
        public string job;
    }


    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {


        List<company> ls_company = new List<company>();//用于分页
        public MainWindow()
        {




            InitializeComponent();
            DataGridBinding();


        }
        void DataGridBinding()
        {
            SqlConnection conn = new SqlConnection("data source=127.0.0.1;database=datagridtest;user id=sa;password=sa123456");
            SqlCommand com = new SqlCommand();
            com.Connection = conn;
            com.CommandText = "select * from company";
            DataSet ds = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = com;
            try
            {
                sda.Fill(ds);//填充dataset


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }


            //表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。 
            //DataView 不存储数据,而是表示其对应的 DataTable 的已连接视图。 
            //对 DataView 的数据的更改将影响 DataTable。 对 DataTable 的数据的更改将影响与之关联的所有 DataView
            foreach (DataRow m in ds.Tables[0].Rows)
            {
                ls_company.Add(new company { companyname = m["companyname"].ToString(), name = m["name"].ToString(), sex = m["sex"].ToString(), age = int.Parse(m["age"].ToString()), job = m["job"].ToString() });
            }
            datagrid.ItemsSource = ds.Tables[0].DefaultView;//public DataView DefaultView { get; }
        }


        //number表示每个页面显示的记录数    currentSize表示当前显示页数  


        /// <summary>
        ///
        /// </summary>
        /// <param name="number">每页多少记录</param>
        /// <param name="currentSize">当前第几页</param>
        private void Binding(int number, int currentSize)
        {
            List<company> ls_curent = new List<company>();
            int count = ls_company.Count;//多少条记录
            int totalpage = 0;//总页数
            int pageSize = int.Parse(textboxpage.Text);//总页数
            if (count % number == 0)
            {
                pageSize = count / number;
            }
            else
            {
                pageSize = count / number + 1;
            }
            tbkTotal.Text = pageSize.ToString();
            tbkCurrentsize.Text = currentSize.ToString();


            ls_curent = ls_company.Take(number * currentSize).Skip(number * (currentSize - 1)).ToList();   //刷选第currentSize页要显示的记录集  
            datagrid.ItemsSource = ls_curent;        //重新绑定dataGrid1  
        }

要点:

1、用Linq从list泛型中选择,有take以及skip方法

2、先将全部数据转存到list中,不过这仅仅适用于总量很少的数据


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值