winform:对dataGridView绑定的泛型List<T> 的简单CRUD

简介:   创建对象类,为所有成员封装字段,然后重载该类;根据已有的对象类(类型参数)创建一个长度可以变化的List数组,并绑定数据源;设置dataGridView的column属性:对应四个对象类创建相应列并用Name属性进行绑定;button_onclick事件点击处理;    ...
 

 

  1.  创建对象类,为所有成员封装字段,然后重载该类;
  2. 根据已有的对象类(类型参数)创建一个长度可以变化的List数组,并绑定数据源;
  3. 设置dataGridView的column属性:对应四个对象类创建相应列并用Name属性进行绑定;
  4. button_onclick事件点击处理;

 

     public partial class Form1 : Form

    {
         public Form1()
        {
            InitializeComponent();
        }
              

        List<Person> L1 =  new List<Person>();
         private List<Person> L11 =  new List<Person>();

         public List<Person> L111
        {
             get {  return L11; }
             set { L11 = value; }
        }

          // internal

         private  void Form1_Load( object sender, EventArgs e)
        {

             // 学号,姓名,年龄,电话
            L111.Add( new Person( " 1 "" 王尼玛 "4" 466666666666 "));
            L111.Add( new Person( " 2 "" 温尼玛 "5" 4444444 "));
            L111.Add( new Person( " 3 "" 诏尼玛 "4" 4444444444 "));
            L111.Add( new Person( " 4 "" 伦尼玛 "4" 4555555 "));
             // this.dataGridView1.DataSource = L1;
            LoadData(L111);

        }

         public  void LoadData(List<Person> L1)
        {
             this.dataGridView1.DataSource =  new BindingList<Person>(L1);
            
        }
         // Add
         private  void button2_Click( object sender, EventArgs e)
        {

            Add a1 =  new Add( this);
            a1.Show();
        }

         // 删除
         private  void button4_Click( object sender, EventArgs e)
        {
             if (dataGridView1.SelectedRows.Count <=  0)
            {
                 return;
            }
             int ind =  this.dataGridView1.CurrentRow.Index;
            L111.RemoveAt(ind);
            LoadData(L111);
        }
         // 退出
         private  void button6_Click( object sender, EventArgs e)
        {
            Application.Exit();
        }
         // 修改
         private  void button3_Click( object sender, EventArgs e)
        {
             // Edit e1 = new Edit(this);
            
// e1.Show();
            Person per =  this.dataGridView1.CurrentRow.DataBoundItem  as Person;
            Add ad =  new Add( this, per);
            ad.ShowDialog();
            ;

        }
         // 刷新
         private  void button5_Click( object sender, EventArgs e)
        {
            LoadData(L111);
        }
        
         // 查询
         private  void button1_Click( object sender, EventArgs e)
        {

            List<Person> L2 =  new List<Person>();
             // 学号,姓名,年龄,电话
             foreach (Person item  in L11)
            {
                 if(item.Name.Contains(textBox1.Text))
                {
                    L2.Add(item);
                }
            }
            LoadData(L2);
            
        }

         private  void textBox1_TextChanged( object sender, EventArgs e)
        {

        }


    }

 

  public class Person

    {
         public Person() { }
         public Person( string no,  string name,  int age,  string phone) {
             this.No = no;
             this.Name = name;
             this.Age = age;
             this.Phone = phone;
            
        }
         // 学号
         private  string no;

         public  string No
        {
             get {  return no; }
             set { no = value; }
        }
         //     姓名
         private  string name;

         public  string Name
        {
             get {  return name; }
             set { name = value; }
        }
         //     年龄
         private  int age;

         public  int Age
        {
             get {  return age; }
             set { age = value; }
        }
         //     电话
         private  string phone;

         public  string Phone
        {
             get {  return phone; }
             set { phone = value; }
        }
    }

 

  public  partial  class Add : Form
    {
         public Add()
        {
            InitializeComponent();


        }
         // Add
        Form1 f;
         public Add(Form1 f)
        {
            InitializeComponent();
             this.f = f;
            button1.Text =  " Add ";
        }


         // 学号,姓名,年龄,电话

         int index;
         // Edit
         public Add(Form1 f, Person per)
        {
            InitializeComponent();
             this.f = f;
            textBox1.Text = per.No;
            textBox2.Text = per.Name;
            textBox3.Text = per.Age.ToString();
            textBox4.Text = per.Phone;
            button1.Text =  " Edit ";
            index = f.dataGridView1.CurrentRow.Index;
        }



         private  void button1_Click( object sender, EventArgs e)
        {
             // 非空验证
             if (textBox1.Text ==  string.Empty || textBox2.Text ==  string.Empty || textBox3.Text ==  string.Empty || textBox4.Text ==  string.Empty)
            {
                MessageBox.Show( " 亲,记得输入数据哦 ");

            }
             else
            {
                 // 验证学号是否重复
                 foreach (Person item  in f.L111)
                {
                     if (item.No == textBox1.Text)
                    {

                         if (button1.Text ==  " Edit " && item.No != textBox1.Tag.ToString().Trim() || button1.Text ==  " Add ")
                        {
                            MessageBox.Show( " 学号已存在! ");
                             return;
                        }
                    }
                }

                 // 修改数据源并重新绑定到DataGridView
                Person p1 =  new Person(textBox1.Text.Trim(), textBox2.Text.Trim(),  int.Parse(textBox3.Text.Trim()), textBox4.Text.Trim());
                
                 if (button1.Text ==  " Add ")
                {
                    f.L111.Add(p1);
                }
                 else
                {
                    f.L111[index] = p1;
                    textBox1.Tag = p1.No;
                }
                f.LoadData(f.L111);




                

                 // f.LoadData(L11);

            }
        }



         private  void textBox4_TextChanged( object sender, EventArgs e)
        {

        }

         private  void Add_Load( object sender, EventArgs e)
        {


        }

         private  void textBox1_TextChanged( object sender, EventArgs e)
        {

        }

         private  void button2_Click( object sender, EventArgs e)
        {
             this.Close();
        }

    } 

 

对应的界面:

 

还有就是新增和修改调用的界面的都是Add。所以会看到在Add开头那里有几个重载,然后会根据不同的 button1.Text执行相对应的操作。

还有一种是用winform 对dictionary进行操作。

dataGridView数据绑定是this.dataGridView.DataSource = new BindingList<T>(); 

 还有定义一个数组去储存某一列的值,比如下面这两句:

 

            string content = File.ReadAllText(Application.StartupPath + "//User.txt");

 

            string[] values = Regex.Split(content, "\r\n");

其他列可以用随机数随便搞定,其他的都差不多。 

最后感谢一下我那个外星人同学,版权归他所有~ 

 

目录
相关文章
|
4月前
|
Java 程序员
Java集合框架:List、Set、Map类型及泛型详解
Java集合框架:List、Set、Map类型及泛型详解
|
6月前
|
前端开发 开发者 容器
SAP Fiori Elements List Report 应用里 Header 字段的绑定路径
SAP Fiori Elements List Report 应用里 Header 字段的绑定路径
41 0
|
7月前
|
索引
SAP Fiori Elements List Report 应用里 Header 字段的绑定路径
SAP Fiori Elements List Report 应用里 Header 字段的绑定路径
37 0
|
8月前
|
安全 Java
Java之List集合的解析及泛型的概述
Java之List集合的解析及泛型的概述
67 0
|
10月前
|
安全 C# 索引
C# 泛型集合和非泛型集合(List ArrayLIst)
C# 泛型集合和非泛型集合(List ArrayLIst)
61 0
|
10月前
|
存储 安全 C#
C#里面的不同集合(数组、ArrayList集合、List泛型)
在内存中连续存储,因此可以快速而容易地从头到尾遍历元素,可以快速地修改元素
|
安全 索引
常用泛型数据接口类——List
常用泛型数据接口类——List
109 0
|
编译器
新年第一问,请解释一下extend和super泛型中list操作的区别?
新年第一问,请解释一下extend和super泛型中list操作的区别?
70 0
C#编程-100:List泛型学习
C#编程-100:List泛型学习