定义学生类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GridViewDemo { public class Student { //姓名 private string Name; public string name { get { return Name; } set { Name = value; } } //得分 private double Score; public double score { get { return Score; } set { Score = value; } } } }
代码实现:
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 GridViewDemo { public partial class Form1 : Form { //定义全局对象 List<Student> studenList = new List<Student>(); DataTable dt = new DataTable(); public Form1() { InitializeComponent(); } #region 创建集合类实现建立并存放20个学生的方法,类似于创建班级类。 private List<Student> GeneraStudent() { List<Student> studentLists = new List<Student>() ; //真正去创建20个学生 for (int i=1; i<21;i++) { Student student = new Student(); student.name = "student"+i; Random rad = new Random(); System.Threading.Thread.Sleep(100); student.score =Convert.ToDouble( Convert.ToDouble(rad.Next(101) + (0.5 * (i % 2))).ToString("000.0")); studentLists.Add(student); } return studentLists; } #endregion #region 绑定到列表控件 private void bangdingstudentOnGridView(int flag) { if (flag == 0) { //表格清空初始化 this.dgv_Students.Rows.Clear(); this.dgv_Students.Columns.Clear(); //实例化表格 dt = new DataTable(); //实例化每列 并初始化列名称和列数据类型 DataColumn dc = new DataColumn(); dc.ColumnName = "Name"; //dc.DataType = Type.GetType("string"); dt.Columns.Add(dc); DataColumn dcvalue = new DataColumn(); dcvalue.ColumnName = "Score"; //dcvalue.DataType = Type.GetType("int"); dt.Columns.Add(dcvalue); //调用创建学生方法,创建20个学生。 studenList = this.GeneraStudent(); //把创建的20个学生用循环方法加载到每行 foreach (Student student in studenList ) { //实例化表格行 并加载创建出的学生信息 DataRow dr = dt.NewRow(); dr["Name"] = student.name; dr["Score"] = student.score; dt.Rows.Add(dr); } //把数据绑定到表格控件数据源 this.dgv_Students.DataSource = dt; DataGridViewLinkColumn dlc = new DataGridViewLinkColumn(); dlc.Name = "Delete"; dlc.Text = "Delete"; this.dgv_Students.Columns.AddRange(new DataGridViewColumn[] { dlc }); foreach (DataGridViewRow dr in this.dgv_Students.Rows) { dr.Cells[2].Value = "Delete"; } } else { ////表格清空初始化 //this.dgv_Students.Rows.Clear(); //this.dgv_Students.Columns.Clear(); dt.Rows.Clear(); //实例化表格 //DataTable dt = new DataTable(); ////实例化每列 并初始化列名称和列数据类型 //DataColumn dc = new DataColumn(); //dc.ColumnName = "Name"; ////dc.DataType = Type.GetType("string"); //dt.Columns.Add(dc); //DataColumn dcvalue = new DataColumn(); //dcvalue.ColumnName = "Score"; ////dcvalue.DataType = Type.GetType("int"); //dt.Columns.Add(dcvalue); //把创建的20个学生用循环方法加载到每行 foreach (Student student in studenList) { //实例化表格行 并加载创建出的学生信息 DataRow dr = dt.NewRow(); dr["Name"] = student.name; dr["Score"] = student.score; dt.Rows.Add(dr); } //把数据绑定到表格控件数据源 this.dgv_Students.DataSource = dt; foreach (DataGridViewRow dr in this.dgv_Students.Rows) { dr.Cells[2].Value = "Delete"; } } } #endregion private void Form1_Load(object sender, EventArgs e) { this.bangdingstudentOnGridView(0); } private void dgv_Students_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 2) { //获取选中行的数据ID string strStudentName = this.dgv_Students.Rows[e.RowIndex].Cells[0].Value.ToString(); foreach (Student st in studenList ) { if(st.name.Equals(strStudentName)) { //删除 studenList.Remove(st); this.bangdingstudentOnGridView(1); return; } } } } } }