如何在C#.NET的DataGridView中允许CRUD操作?

时间:2011-05-28 21:44:26

标签: c# datagridview crud

将数据库(我正在使用Northwind)绑定到DataGridView时遇到了很多麻烦。 我尝试了各种方法,但没有一种适用于所有操作,只有一些操作。 我也问过其他网站,但到目前为止我还没有得到任何有用的建议。

是否有一个教程涵盖了所有CRUD操作(或几个教程的组合,它们共同涵盖了所有内容)?

特别是删除操作让我头疼,因为我得到的唯一提示是将我的删除代码放入某些DataGridView事件,但问题是我无法找到确定用户想要删除的内容的方法。对于删除键,不会触发KeyDown事件。

谢谢!

编辑: 非常感谢你。该文件非常有用。 我有另一个问题,我有一个DataTable作为DataGridView的DataSource。 要更新它以执行用户输入CRUD操作,我是否需要手动将数据插入DataTable中,或者仅仅使用适配器的DeleteCommand / InsertCommand / etc属性构建常规SQL命令,然后将尚未修改的DataTable传递为Update方法中的参数?

即。这会让我得到一个新的行,使用用户刚刚输入DataGridView的值插入到db表中的结果吗?

private void DGV_Nwind_UserAddedRow(object sender, DataGridViewRowEventArgs e)
    {
        string sql = "INSERT INTO [" + table.TableName + "] VALUES ("; //sql command base

        //add values to command
        for (int i = 0; i < e.Row.Cells.Count; i++)
        {
            sql += "'" + e.Row.Cells[i].ToString() + "'"; 

            if (i < (e.Row.Cells.Count - 1)) 
            {
                sql += ", ";
            }
            else
            {
                sql += ")";
            }
        }

        //update table
        con.OleAdapter.InsertCommand = new OleDbCommand(sql);
        con.OleAdapter.Update(table);
    }

3 个答案:

答案 0 :(得分:1)

我创建了一个C#Lib&amp;应用程序,让您创建对象,CRUD操作(使用BLL&amp; DAL)和Web UI来执行CRUD操作。

http://manacodegenerator.codeplex.com

它轻巧且使用起来非常简单,它帮助我摆脱了那些无聊的重复代码创建时间。

我不断发展它,因为它是我每天使用的工具。

希望它有所帮助!

答案 1 :(得分:0)

如果您使用的是WPF应用程序,这里有一个如何进行CRUD操作的教程:

http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx#updates

基本上,您将绑定到行已删除的事件,并且在您的方法中,您将处理已删除的行。

以下是使用DataGridView的文档。其中有关于绑定到Delete事件和其他CRUD操作的信息:

http://www.windowsclient.net/Samples/Go%20To%20Market/DataGridView/DataGridView%20FAQ.doc

答案 2 :(得分:-1)

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

namespace Projecttest
{
    class Program
    {
        struct student
        {
            public string stid;
            public string stname;
            public string stage;

        };
        static void Main(string[] args)
        {
            student[] st = new student[4];
            int choice;
            string confirm;

            int count = 0;
            Console.WriteLine("Select operation to Perform");
            Console.WriteLine("1. ADD");
            Console.WriteLine("2. UPDATE");
            Console.WriteLine("3. DELETE");
            Console.WriteLine("4. SHOW");
            do
            {
                Console.Write("enter your choice(1-4):");
                choice = Convert.ToInt32(Console.ReadLine());
                switch (choice)
                {
                    case 1:
                        Add(st, count);
                        count++;
                        break;
                    case 2:
                        Update(st);
                        break;
                    case 3:
                        Delete(st);
                        break;
                    case 4:
                        Show(st);
                        break;
                    default:
                        Console.WriteLine("\nInvalid Selection\n");
                        break;
                }

                Console.Write("Press Y or y to continue:");

                confirm = Console.ReadLine().ToString();
            } while (confirm == "Y" || confirm == "y");
        }

        static void Add(student[] st, int count)
        {
            Console.Write("\nEnter student ID: ");
            st[count].stid = Console.ReadLine();
            Console.Write("Enter student name: ");
            st[count].stname = Console.ReadLine();
            Console.Write("Enter student age: ");
            st[count].stage = Console.ReadLine();
        }
        static void Show(student[] st)
        {
            for (int count = 0; count < st.Length; count++)
            {
                if (st[count].stid != null)
                {
                    Console.WriteLine("\nStudent ID : " + st[count].stid);
                    Console.WriteLine("Student Name : " + st[count].stname);
                    Console.WriteLine("Student Age : " + st[count].stage);
                }
            }
        }
        static void Delete(student[] st)
        {
            Console.Write("\nEnter student ID: ");
            string studid = Console.ReadLine();
            for (int count = 0; count < st.Length; count++)
            {
                if (studid == st[count].stid)
                {
                    st[count].stid = null;
                    st[count].stname = null;
                    st[count].stage = null;
                }
            }
        }
        static void Update(student[] st)
        {
            Console.Write("\nEnter student ID: ");
            string studid = Console.ReadLine();
            for (int count = 0; count < st.Length; count++)
            {
                if (studid == st[count].stid)
                {
                    Console.Write("Enter student name: ");
                    st[count].stname = Console.ReadLine();
                    Console.Write("Enter student age: ");
                    st[count].stage = Console.ReadLine();
                }
            }
        }
    }
}