Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Удаление текущей строки из datagridview


Автор: vladislav42 18.4.2018, 13:30
Код

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

namespace Login
{
    public partial class SpravOtdel : Form
    {
        public SpravOtdel()
        {
            InitializeComponent();
            LoadData();
        }
        SqlConnection con;
        public void LoadData()
        {
            // блок подключения(ip)
            con = new SqlConnection(DB.ConnectionString);
            con.Open();
            dataGridView1.Rows.Clear();
            string query = "SELECT OtdelName From SpravOtdel ORDER BY OtdelName";
            SqlCommand command = new SqlCommand(query, con);
            SqlDataReader reader = command.ExecuteReader();
            List<string[]> data = new List<string[]>();

            while (reader.Read())
            {
                data.Add(new string[1]);
                data[data.Count - 1][0] = reader[0].ToString();
            }
            reader.Close();

            con.Close();

            foreach (string[] s in data)
                dataGridView1.Rows.Add(s);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            {
                AddOtdel добавить1 = new AddOtdel(this);
                добавить1.ShowDialog();
            }
        }

        private async void button3_Click(object sender, EventArgs e)
        {
                if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                 // блок подключения(ip)
                 con = new SqlConnection(DB.ConnectionString);
                 con.Open();
       // Заготовка Sql-предложения Delete
                 SqlCommand command = new SqlCommand(@"DELETE FROM [SpravOtdel] WHERE (OtdelName)=(@OtdelName)", con);
                 // Формируем запрос на удаление данных
                 command.Parameters.AddWithValue("OtdelName", dataGridView1.CurrentRow.Cells[1].Value);
                 // Выполняем команду на удаление записи
                 await command.ExecuteNonQueryAsync();
                }
                else 
                 // Выводим сообщение
                 {
                   MessageBox.Show("Запись успешно удалена", "Удаление", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   LoadData();
                 }
                 } 
        }
    }

                 // Заготовка Sql-предложения Delete
                 SqlCommand command = new SqlCommand(@"DELETE FROM [SpravOtdel] WHERE (OtdelName)=(@OtdelName)", con);
                 // Формируем запрос на удаление данных
                 command.Parameters.AddWithValue("OtdelName", dataGridView1.CurrentRow.Cells[1].Value);

      Красным выделил на что идет ошибка.
Datagrid заполняется через LoadData, tableadapter и bindingsource не используются
Как мне исправить код чтобы текущая строка  удалялась из грида и бд microsoft sql server?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)