效果图:
数据内容:json格式的数据
[
{
"id": 1001,
"stuname": "小王"
},
{
"id": 1002,
"stuname": "瓦工是"
},
{
"id": 1003,
"stuname": "他王王"
},
{
"id": 1004,
"stuname": "小王4"
},
{
"id": 1005,
"stuname": "瓦工是5"
},
{
"id": 1006,
"stuname": "他王王6"
},
{
"id": 1007,
"stuname": "小王7"
},
{
"id": 1008,
"stuname": "瓦工是8"
},
{
"id": 1009,
"stuname": "他王王9"
},
{
"id": 1010,
"stuname": "小王10"
},
{
"id": 1011,
"stuname": "瓦工是11"
},
{
"id": 1012,
"stuname": "12他王王"
}
]
新建一个类:StudentInfo
public class StudentInfo
{
public int Id { get; set; }
public string StuName { get; set; }
}
窗体主界面代码:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp6
{
public partial class MainFrm : Form
{
private int rows = 0;//总行数
private int currentPage = 1;//当前页
private List<StudentInfo> students = new List<StudentInfo>();
public MainFrm()
{
InitializeComponent();
dgvStudent.AutoGenerateColumns = false;
cobPagesize.SelectedIndex = 0;
Init();
}
private void Init()
{
string studentStr = File.ReadAllText("File\\student.txt");
students = JsonConvert.DeserializeObject<List<StudentInfo>>(studentStr);
rows = students.Count();
lblRows.Text = $"总共有[{rows.ToString()}]条数据";
lblCurrentPage.Text = $"当前第[{currentPage}]页";
dgvStudent.DataSource = students.Take(Convert.ToInt32(cobPagesize.Text)).ToList();
}
//首页
private void Btn_shou_Click(object sender, EventArgs e)
{
currentPage = 1;
DataLoad(currentPage, Convert.ToInt32(cobPagesize.Text));
}
//下一页
private void Btn_xia_Click(object sender, EventArgs e)
{
int i = rows % Convert.ToInt32(cobPagesize.Text) == 0 ? rows / Convert.ToInt32(cobPagesize.Text) : (rows / Convert.ToInt32(cobPagesize.Text)) + 1;
if (currentPage == i)
{
return;
}
currentPage++;
DataLoad(currentPage, Convert.ToInt32(cobPagesize.Text));
}
//上一页
private void Btn_shang_Click(object sender, EventArgs e)
{
if (currentPage == 1)
{
return;
}
currentPage--;
DataLoad(currentPage, Convert.ToInt32(cobPagesize.Text));
}
//尾页
private void Btn_wei_Click(object sender, EventArgs e)
{
//总页数=总行数/每页的行数(如果除不尽则+1)
currentPage = rows % Convert.ToInt32(cobPagesize.Text) == 0 ? rows / Convert.ToInt32(cobPagesize.Text) : (rows / Convert.ToInt32(cobPagesize.Text)) + 1;
DataLoad(currentPage, Convert.ToInt32(cobPagesize.Text));
}
//切换每页多少条展示
private void CobPagesize_SelectedIndexChanged(object sender, EventArgs e)
{
currentPage = 1;
DataLoad(currentPage, Convert.ToInt32(cobPagesize.Text));
}
/// <summary>
/// 重新绑定数据
/// </summary>
/// <param name="currentPage">当前页</param>
/// <param name="pageSize">每页多少条</param>
private void DataLoad(int currentPage, int pageSize)
{
lblCurrentPage.Text = $"当前第[{currentPage}]页";
dgvStudent.DataSource = students.Skip(currentPage * pageSize - pageSize).Take(pageSize).ToList();
}
}
}
记录一下。。。以免以后需要翻项目麻烦。。