WPF中datagrid分页

来源:互联网 发布:输出多个数组matlab 编辑:程序博客网 时间:2024/05/16 16:55
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中,不过这仅仅适用于总量很少的数据


0 0