DataGridView 对象集合显示属性控件

字段是类内全局变量,

构造方法内初始化字段的值,

在方法内绑定和显示。 

1绑定数据源:绑定集合

this.dgvCourseList.DataSource = null;
this.dgvCourseList.DataSource = this.学生list;
this.lable3=this.学生list.Count.ToString(); // 显示数量

 是否选择了一行:

 if (this.dataGridView2.CurrentRow==null)
{
   MessageBox.Show("请选择一行");
  return;
}

获取数据,属性:

int i=  (int)this.dataGridView2.CurrentRow.Cells["id"].Value;

获取对象

对象是引用类型,找出来后,你修改它,其它控件的值也会跟着发生改变。

//同步
tb课表 tbc = (from c in this.list课表 where c.id == tb.id select c).First();
tbc.课名 = textBox3.Text;// 当你修改后
dataGridView2.Refresh();  // 同步显示刷新
this.学生list.Where(c => c.id == this.id).First());
// 集合中查找:单个对象 id 等于 需要的 id值 时给左值。
int  id值 = (int)this.DGV.CurrentRow.Cells["id"].Value;
TB学生  tb学生=null;
foreach(var item in this.学生list)
{
  if(item.id.Equals(id值))
    {
      tb学生=item;
    }
}

作用:是显示实例对象集合中的部分或所有属性。

比如成绩报告单有:姓名,数学,语文,英语,等成绩。这个控件显示所有成员。

每一行都是一个学生对象。   List<学生>

刷新数据  控件显示刷新  this.dgv成绩单.Refresh();

private void btn保存_Click(object sender, EventArgs e)
{
   addedCourse.Add(course);
   this.dgvCourseList.DataSource = null;//如果不清空,后面不会同步显示新增加的
   this.dgvCourseList.DataSource = this.addedCourse;
}

DataGridView

 private System.Windows.Forms.DataGridView dgv成绩单;

这个控件拖入主窗体,它的定义在主窗体的 默认构造方法内。

        public Form1()
        {
            InitializeComponent();
        }

1 先做个类型   成绩单

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace list_Demo
{
    internal class Class_学生
    {
        public string 名字 { get; set; }
        public int 数学 { get; set; } 
        public int 语文 { get; set; }
        public int 英语 { get; set; } 
         
        public Class_学生(string c1_名字, int c2_数学, int c3_语文,int c4_英语)
            //默认有参构造方法
        {
            名字 = c1_名字;
            数学 = c2_数学;
            语文 = c3_语文;
            英语 = c4_英语;
        }
        public void z_自定义方法()
        {

        }
    }
}

2拖入控件

 3 在按钮事件里就可以写代码了

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace list_Demo
{
    public partial class Form1 : Form
    {
        List<Class_学生> c1_成绩报告单;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {//加载集合按钮
            Class_学生 no001= new Class_学生("维修电工",99, 99, 99);//数学,语文,英语
            Class_学生 no003 = new Class_学生("张三", 33,33,33);
            Class_学生 no004 = new Class_学生("李四", 44, 44, 44);
            Class_学生 no005 = new Class_学生("王五", 55,55,55);
            c1_成绩报告单=new List<Class_学生> { no001,no003,no004,no005};

            dgv成绩单.DataSource = c1_成绩报告单;

        }
    }
}

4 我们来看下效果

公有字段是不显示的,所以要注意 public  int   数学;

必须是属性才能正常显示;

只显示部分属性:

//禁止自动生成列
this.dgvCourseList.AutoGenerateColumns = false;

 属性列可以像数组那样用下标。

添加出数据类型。 

有了数据类型后:三角处,点击编辑列。

 这个123列名称要一样。不想显示的属性列可以移除掉(2是要显示的属性)


//3显示
list.Add(tb);//数据对象加入集合
dataGridView1.DataSource = list;//绑定集合,用于显示对象
dataGridView1.AutoGenerateColumns = false;//不显示所有列

自动列宽  .AutoResizeColumns(); 

以某个属性排列   .Sort(new  s_升序());

    /// <summary>
    /// 课程编号升序
    /// </summary>
    class s_升序 : IComparer<T>
    {
        public int Compare(T x, T y)
        {
            return x.数学.CompareTo(y.数学);
        }
    }

排序取反  .Reverse(); //反排序

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值