效果:使用dataGridView展示http里的姓名,年龄,性别,手机而且可以编辑,删除;有添加按钮查询,刷新,页数功能
窗体Framework
搭建窗口(要将dataGridView里的数据和类对应)
编辑和删除设置图片(有内容图片才会显示)
页数是使用flowLayoutPanel
代码
双击Form1桌面
private void Form1_Load(object sender, EventArgs e)
{
GetStudents();
}
设置GetStudents方法
获取学生信息
public string baseURL = "http://192.168.113.74:3000"; // 基础路径
public Condition con = new Condition(); //查询条件对象
public List<Student> list = null; //学生集合对象
public async void GetStudents()
{
//传递一个对象,查询对象
string data = await HttpTest.GetAsyncWithObject(baseURL + "/search", con);
//JObject 第三方提供的解析根类的对象
//string msg = JsonConvert.DeserializeObject<JObject>(data)["msg"].ToString();
//根实体对象里面data对应的值
string d1 = JsonConvert.DeserializeObject<JObject>(data)["data"].ToString();
Data d2 = JsonConvert.DeserializeObject<Data>(d1);
this.list = d2.data;
this.dataGridView1.DataSource = this.list;
//创建页数按钮
PageButtonShow(d2.currentPage, d2.maxPage);
}
PageButtonShow方法
创建页数按钮传递当前页数和最大页数
public void PageButtonShow(int current,int maxPage)
{
//把页数和上一页 下一页 放到一个数组,遍历数组创建按钮
//例如总共3页,把1 2 3,上一页 下一页 放到数组里面
//如何设计数组?
List<string> pages = new List<string>(); //页数的数组,存放1 、2、3字符串
pages.Add(current.ToString());// 如目前是第一页 :[1]
int count = maxPage > 5 ? 5 : maxPage;//count 最大是5
int pre = current;//向前找变量 目前等于当前页
int next = current;//向后找变量 目前等于当前页
while (pages.Count < count)
{
pre--;
if (pre >= 1)
pages.Insert(0, pre.ToString()); // 把pre放进数组最前面
next++;
if(next<=maxPage)
pages.Add(next.ToString());//把next放到当前位置
}
pages.Insert(0,"<");//上一页
pages.Add(">");// 下一页
//显示按钮
this.flowLayoutPanel1.Controls.Clear();
for (int i = 0; i < pages.Count; i++)
{
string item = pages[i].ToString();//取出每一个元素,1,2,3
Button btn = new Button();
btn.Width = 30;
btn.Height =30;
btn.Text = item;
btn.BackColor = Color.White;
//如果当前是第一页 让上一页的按钮不可用,如果是最后一页,下一页按钮不能用
if (current<=1&&i==0 || current >=maxPage && i==pages.Count-1)
{
btn.Enabled = false; //设置按钮不可用
}
//按钮是中间的时候并且找到当前页对应按钮,把这个按钮设置高亮
if (i!=0 && i!=pages.Count-1 && Convert.ToInt16(item)==current )
{
btn.BackColor = Color.Blue;
btn.Enabled = false;
}
if (i == 0) //上一页按钮
{
btn.Tag = -1;
btn.Click += Btn_Click;
}
else if (i == pages.Count - 1) // 下一页按钮
{
btn.Tag = +1;
btn.Click += Btn_Click;
}
else //中间的按钮
{
btn.Tag = item; //1,2,3,
btn.Margin = new Padding(0,3,0,3);
btn.Click += Btn_Click1;
}
this.flowLayoutPanel1.Controls.Add(btn);
}
this.flowLayoutPanel1.Location = new Point((this.Width - this.flowLayoutPanel1.Width) / 2, this.flowLayoutPanel1.Location.Y);
}
//跳转到指定页数
private void Btn_Click1(object sender, EventArgs e)
{
int p = Convert.ToInt16(((Button)sender).Tag);
con.currentPage = p;
GetStudents();
}
//上一页和下一页
private void Btn_Click(object sender, EventArgs e)
{
int p = Convert.ToInt16(((Button)sender).Tag);
con.currentPage += p;
GetStudents();
}
}
标签:管理系统,C#,一页,页数,int,窗体,按钮,btn,pages
From: https://blog.csdn.net/weixin_73535261/article/details/139453755