Goran Bibic Ответов: 2

Что случилось? Я не могу удалить строку с помощью нажатия кнопки


private void button4_Click(object sender, EventArgs e)
        {
            if (bar_code1DataGridView.SelectedRows.Count > 0)
            {

                DataGridViewRow dr = bar_code1DataGridView.SelectedRows[0];
                if (!string.IsNullOrEmpty(dr.Cells["dataGridViewTextBoxColumn1"].Value.ToString()))
                {

                    String cs = "Data Source=.\\SQLEXPRESS;Initial Catalog=barcode;Integrated Security=True";
                    using (SqlConnection openCon = new SqlConnection(cs))
                    {


                        using (SqlCommand querySaveStaff = new SqlCommand("DELETE FROM bar_code1 WHERE id=@id", openCon))
                        {

                            // querySaveStaff.Parameters.Add("@id",SqlDbType.Int).Value=idTextBox.Text;
                            querySaveStaff.Parameters.AddWithValue("@id", 0);
                            
                            openCon.Open();
                            querySaveStaff.ExecuteNonQuery();
                            openCon.Close();

                        }

                    }

                    using (SqlConnection openCon = new SqlConnection(cs))

                    {

                        string saveStaff = "SELECT * FROM dbo.bar_code1 ";
                        openCon.Open();
                        using (SqlDataAdapter querySaveStaff = new SqlDataAdapter(saveStaff, cs))
                        {
                            querySaveStaff.Fill(barcodeDataSet.bar_code1);
                            bar_code1DataGridView.DataSource = barcodeDataSet.bar_code1;
                            bar_code1DataGridView.Update();
                            bar_code1DataGridView.Refresh();
                        }

                    }
                }
            }
        }<pre lang="text">


Что я уже пробовал:

Whats wrong? I can not delete the row with button click

2 Ответов

Рейтинг:
4

Goran Bibic

private void button4_Click(object sender, EventArgs e)
       {
           int id;
           if (bar_code1DataGridView.SelectedRows.Count > 0)
           {

               DataGridViewRow dr = bar_code1DataGridView.SelectedRows[0];
               if (!int.TryParse(idTextBox.Text, out id))
               {

               String cs = "Data Source=.\\SQLEXPRESS;Initial Catalog=barcode;Integrated Security=True";
                   using (SqlConnection openCon = new SqlConnection(cs))
                   {


                       using (SqlCommand querySaveStaff = new SqlCommand("DELETE FROM bar_code1 WHERE id=@id", openCon))
                       {

                           // querySaveStaff.Parameters.Add("@id",SqlDbType.Int).Value=idTextBox.Text;
                           querySaveStaff.Parameters.AddWithValue("@id", id);

                           openCon.Open();
                           querySaveStaff.ExecuteNonQuery();
                           openCon.Close();

                       }




               }



               using (SqlConnection openCon = new SqlConnection(cs))

                   {

                       string saveStaff = "SELECT * FROM dbo.bar_code1 ";
                       openCon.Open();
                       using (SqlDataAdapter querySaveStaff = new SqlDataAdapter(saveStaff, cs))
                       {
                           querySaveStaff.Fill(barcodeDataSet.bar_code1);
                           bar_code1DataGridView.DataSource = barcodeDataSet.bar_code1;
                           bar_code1DataGridView.Update();
                           bar_code1DataGridView.Refresh();
                       }

                   }
               }


                       MessageBox.Show("Dont Work ");
                   return;


           }
       }


Goran Bibic

Это не сработает

Karthik_Mahalingam

какой столбец идентификатора находится в таблице?
вы получаете какую-нибудь ошибку ?

Goran Bibic

Нет ошибки, идентификатор равен нулю месте

Maciej Los

Это не ответ. Пожалуйста, удалите его, чтобы избежать голосования вниз. Чтобы оставить комментарий, используйте виджет "есть вопрос или комментарий".

Рейтинг:
1

OriginalGriff

Вероятно, дело в том, что ваше идентификационное значение фиксировано:

using (SqlCommand querySaveStaff = new SqlCommand("DELETE FROM bar_code1 WHERE id=@id", openCon))
    {
    querySaveStaff.Parameters.AddWithValue("@id", 0);
Как только вы удалите эту строку, вы не сможете удалить ее снова.
А что касается вашего закомментированного кода:
querySaveStaff.Parameters.Add("@id",SqlDbType.Int).Value=idTextBox.Text;
Это тоже не обязательно сработает.
Вместо этого используйте int.TryParse в верхней части вашего метода, чтобы проверить и проверить вводимые пользователем данные, а затем использовать преобразованное значение в качестве параметра.
int id;
if (!int.TryParse(idTextBox.Text, out id))
   {
   ... report problem to user ... 
   return;
   }
...
querySaveStaff.Parameters.AddWithValue("@id", id);

Но, пожалуйста, разберитесь со своими именами переменных! "querySaveStaff" удаляет данные? Не очевидный бит самодокументации!