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中,不过这仅仅适用于总量很少的数据