2013-04-08 4 views
0

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

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

namespace project 
{ 
    public partial class frmTestPrint : Form 
    { 
     public frmTestPrint() 
     { 
      InitializeComponent(); 
     } 

     private void frmTestPrint_Load(object sender, EventArgs e) 
     { 
      // TODO: This line of code loads data into the 'usersDataSet1.Booking' table. You can move, or remove it, as needed. 
      this.bookingTableAdapter.Fill(this.usersDataSet1.Booking); 

     } 


     private void btnDelete_Click(object sender, EventArgs e) 
     { 
      dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index); 
     } 
    } 
} 
+0

Если вы пытаетесь удалить строку из базы данных, не считаете ли вы хорошей отправкой кода SQL-кода? Как бы то ни было, вы только разместили код, который влияет на 'datagridview'. – Brian

+0

У меня нет команды SQL ... я использовал datagridview и выбрал источник данных через свойства ... – bandaa

+0

- это проблема? почему я не могу удалить и обновить таблицу базы данных SQL? – bandaa

ответ

0

Вы фактически не воздействуете на базу данных. Возможно, это поможет:

How to delete a selected DataGridViewRow and update a connected database table?

исследовали вы метод .update вы получаете с TableAdapter? Я думаю, что это должно покрыть то, что вам нужно. http://msdn.microsoft.com/en-us/library/bz9tthwx(v=vs.100).aspx

ли эту работу:

private void btnDelete_Click(object sender, EventArgs e) 
    { 
     dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index); 
     this.bookingTableAdapter.Update(this.usersDataSet1.Booking); 
    } 

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

+0

Я посмотрел ссылку, не могу найти реальное решение, которое помогает? не код удаляет мои данные из БД – bandaa

+0

Я думаю, что последний должен вас закрыть ... или, может быть, посмотрите здесь: http://msdn.microsoft.com/en-us/library/xzb1zw3x.aspx – sous2817

+0

Обновленный ответ w/new link..хорошо, это немного яснее. – sous2817

1
private void Delete() 
    { 

     int i = 0; 
     con1 = getConnection(); 
     con1.Open(); 
     SqlCommand storedProcedureCommand = con1.CreateCommand(); 
     storedProcedureCommand.CommandType = CommandType.Text; 
     storedProcedureCommand.CommandText = "DELETE FROM name of your table WHERE pkeyID = @pkeyID"; 

     SqlParameter inparam2 = new SqlParameter("@pkeyID", SqlDbType.Int); 
     inparam2.Direction = ParameterDirection.Input; 
     inparam2.Value = Convert.ToInt32(dataGridView2.Rows[i].Cells[0].Value); 
     storedProcedureCommand.Parameters.Add(inparam2); 
     storedProcedureCommand.ExecuteNonQuery(); 

    }  
+0

, конечно, измените имя вашего datagrid, а также найдите в ячейке ведьмы ваш pkeyID, а затем вызовите метод loaddata() после этого и вот оно! – Bane

+0

выглядит хорошо, im в настоящее время работает над другими вещами, но я снова посмотрю на это, и если он сработает, то ваш ответ будет правильным ответом :) cheers – bandaa

+0

не проблема, приветствия:) \ – Bane

0

Delete a value from the data grid using DataGridviewBUttonColumn

private void delete_record() 
    { 

     if (dataGridView1.Rows.Count > 1 && dataGridView1.SelectedRows[0].Index != dataGridView1.Rows.Count - 1) 
     { 
      try 
      { 
       //am taking connection string using a class called "sqlconnection_imventory()" 
       SqlConnection conn = Connection.sqlconnection_imventory(); 
       //Cell[0] is my button column & Cell[1] is SID coumn 
       string a = dataGridView1.SelectedRows[0].Cells[1].Value.ToString(); 
       string sql = "DELETE FROM grades WHERE SID='" + a + "'"; 
       conn.Open(); 
       SqlCommand delcmd = new SqlCommand(sql, conn); 
       delcmd.Connection = conn; 
       delcmd.ExecuteNonQuery(); 
       conn.Close(); 
       dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); 
       MessageBox.Show("deleted"); 
      } 
      catch (Exception) 
      { 

       throw; 
      } 
     } 
    } 
1

Это только для удаления по одному. Я все еще работаю над несколькими удалениями.

 if (MessageBox.Show("Sure you wanna delete?", "Warning", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) 
     { 
      //get the index from the dataGridView 
      int rowIndex = table1DataGridView.CurrentCell.RowIndex; 
      //Remove from both the actual database & datagridview 
      table1BindingSource.RemoveAt(rowIndex); 
      //update table 1 
      this.table1TableAdapter.Update(this.maquinasDataSet.Table1); 
      //load table 1 
      this.table1TableAdapter.Fill(this.maquinasDataSet.Table1); 
     } 
Смежные вопросы