Как разрешить операции CRUD в DataGridView в C # .NET? - PullRequest
2 голосов
/ 29 мая 2011

У меня было много проблем с привязкой базы данных (я использую Northwind) к DataGridView. Я пробовал разные подходы, но ни один не работал для всех операций, только некоторые. Я также спрашивал на других сайтах, но до сих пор не получил ни одного полезного совета.

Существует ли учебное пособие, которое охватывает действительно все операции CRUD (или комбинацию нескольких учебных пособий, которые вместе охватывают все)?

Особенно операция удаления вызывает у меня головную боль, так как единственный совет, который я получил, состоит в том, чтобы поместить мой код удаления в какое-то событие DataGridView, но проблема в том, что я не могу найти способ определить, что именно пользователь хочет удалить, и событие KeyDown не сработает для ключа удаления.

Спасибо!

EDIT: Большое спасибо. Этот документ очень полезен. У меня есть другой вопрос, хотя, у меня есть DataTable в качестве источника данных для DataGridView. Чтобы обновить его для выполнения операций пользовательского ввода CRUD, нужно ли вручную вставлять данные в DataTable или достаточно просто создать обычную команду SQL со свойствами адаптера DeleteCommand / InsertCommand / etc, а затем просто передать неизмененный DataTable как аргумент в методе Update?

т.е. это даст мне желаемый результат вставки новой строки в таблицу базы данных со значениями, которые пользователь только что ввел в DataGridView?

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 ]

1 голос
/ 31 июля 2012

Я создал C # Lib & App, который позволяет вам создавать свой объект, операции CRUD (используя BLL & DAL) и веб-интерфейс для выполнения этих операций CRUD.

http://manacodegenerator.codeplex.com

Это легкий и довольно простой в использовании, он помог мне избавиться от тех скучных часов повторяющегося создания кода.

Я постоянно совершенствуюсь, поскольку это инструмент, которым я пользуюсь ежедневно.

Надеюсь, это поможет!

0 голосов
/ 15 сентября 2015
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();
                }
            }
        }
    }
}
0 голосов
/ 29 мая 2011

Если вы используете приложение 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

...