2013-07-31 48 views
0

我想删除datagridview中的选定行并删除Mysql中的行。删除datagridview中的选定行并删除数据库中的行

private void deleteOrderButton_Click(object sender, EventArgs e) 
{ 
    int selectedIndex = orderDataGridView.CurrentCell.RowIndex; 

    if (selectedIndex > -1) 
    { 
     orderDataGridView.Rows.RemoveAt(selectedIndex); 
     orderDataGridView.Refresh(); 
    } 

    string constring = "datasource=localhost;port=3306;username=admin;password=acw123"; 
    string Query = "delete from database.tem_order where temp_orderID = ???? 
    MySqlConnection conDatabase = new MySqlConnection(constring); 
    MySqlCommand cmdDataBase = new MySqlCommand(Query, conDatabase); 
    MySqlDataReader myReader; 

    conDatabase.Open(); 
    myReader = cmdDataBase.ExecuteReader(); 
    MessageBox.Show("Updated"); 

我卡在MySql命令里面; 有人帮忙?

+1

网格的数据源是如何设置的? –

+0

数据源是来自同一张表,我回顾出来显示,我想删除数据网格中的选定项目,也在数据库中 – user2601433

回答

1

在DataGridView上使用数据源时,您可以检索所选行的对象。

DataRow row = (dataGridView.SelectedRows[0].DataBoundItem as DataRowView).Row; 

DataRow'row'应该包含允许您删除MySQL中的记录的ID。 替换 “ID列名称” 与真实列名

using(MySqlConnection sqlConn = new MySqlConnection("datasource=localhost;port=3306;username=admin;password=acw123")) 
{ 
    sqlConn.Open(); 

    using(MySqlCommand sqlCommand = new MySqlCommand("DELETE FROM tem_order WHERE temp_orderID = " + row["ID-column-name"],sqlConn)) 
    { 
     sqlCommand.ExecuteNonQuery(); 
    } 
} 
+0

查询删除该行如何? – user2601433

+0

再次看看anwser,我已经为删除查询添加了一个示例。 –

+0

错误发生 索引超出范围。必须是非负数且小于集合的大小。 参数名称:索引 – user2601433

0

我希望它可以帮助

dataGridView1.Rows.RemoveAt(item.Index);

由您应该使用事务范围,使这两个动作我的建议

+0

RemoveAt没有给出他需要执行MySQL删除的ID。 –

+0

我想问什么我应该输入数据库查询字符串查询=“从数据库.tem_order删除其中temp_orderID = ???? – user2601433

+0

用于做循环获取选定的行并分配像int ordrID = YourDatagrid.Rows [i]。单元格[c] .Value;和您的查询=“删除从database.tem_order其中temp_orderID = ordrID –

0

您可以从选定单元格获得订单ID的方式。

 int selectedIndex = orderDataGridView.CurrentCell.RowIndex; 
     String selectedOrderID = ""; 
     if (selectedIndex > -1) 
     { 

      orderDataGridView.Rows.RemoveAt(selectedIndex); 
      //Replace "OrderID" with the column name of the Order's ID 
      selectedOrderID = orderDataGridView.Rows[selectedIndex].Cells["OrderID"].Value.ToString(); 

     } 

您的查询将是这样的:

 string Query = "delete from database.tem_order where temp_orderID = " + selectedOrderID ; 
     //This is only an example, you should set the params to avoid SQL Injection 

然后你只需删除并刷新GridView控件,来完成:

 conDatabase.Open(); 
     myReader = cmdDataBase.ExecuteReader(); 
     orderDataGridView.Refresh(); 
+0

string selectedOrderID = 0; 不能将类型'int'隐式转换为'string' – user2601433

+0

对不起,我的坏,它必须是:String selectedOrderID =“”; –

0
DialogResult dr = XtraMessageBox.Show(Global.lk, "Are you sure to Delete this record ?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Information); 

      if (dr.ToString() == "Yes") 
      { 
       int[] selectedRows = gridViewDeduction.GetSelectedRows(); 
       string type_id = gridViewDeduction.GetRowCellValue(selectedRows[0], gridViewDeduction.Columns["TypeId"]).ToString(); 


       if (type_id != "") 
       { 
        string xsql = "DELETE FROM Pay_DeductionTypeMaster WHERE TypeId = " + type_id + " AND CompanyID = " + Global.CompanyID + ""; 
        bool del = Database.ExecuteSQL(xsql); 
        if (!del) 
        { 
         XtraMessageBox.Show(Global.lk, "Unable to delete record.This deduction details is in use.", "Deduction Type");       
         return; 
        } 
        dt.Rows.RemoveAt(gridViewDeduction.FocusedRowHandle); 
       } 
       else 
        dt.Rows.RemoveAt(gridViewDeduction.FocusedRowHandle); 
       dt.AcceptChanges(); 
       gridViewDeduction.RefreshData(); 
0

(从表名“中删除其中ID = ( ' “+ Grid1.Rows [Grid1.CurrentRow.Index] .Cells [” ID “]。值+”');“); //获得所选单元格的值

+1

请正确格式化并添加一些说明。 – Sid