C#窗体学生管理系统①

效果:使用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();
    }
}

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值