【问题标题】:How to delete a selected row from datagridview and database如何从datagridview和数据库中删除选定的行
【发布时间】:2011-04-04 13:32:27
【问题描述】:

这个想法是删除时选择的行从datagridview,数据库中删除,然后刷新datagridview。我认为它必须使用 SQL 来完成,但是如何将文本类型的 sqlcommand 与具有该特定行的删除代码链接起来? 数据库由一个表组成,数据网格绑定到它。

删除按钮:

private void btnBookRecord_Click(object sender, EventArgs e)
{
    if (this.BooksGrid.SelectedRows.Count > 0)
    {
        foreach (DataGridViewRow dgvrCurrent in BooksGrid.SelectedRows)
        {
            if (dgvrCurrent == BooksGrid.CurrentRow)
            {
                BooksGrid.CurrentCell = null;
            }

            // Delete row code here
        }
    }
}

【问题讨论】:

    标签: c# winforms datagridview row delete-row


    【解决方案1】:

    由于某种原因,datagridview 不会更新,即使我从有效的添加按钮复制了刷新代码。但它确实会从数据库中删除记录。

    private void deleteRecord()
    {
        if (BooksGrid.SelectedRows.Count > 0)
        {
            int selectedIndex = BooksGrid.SelectedRows[0].Index;
    
            int rowID = int.Parse(BooksGrid[0, selectedIndex].Value.ToString());
            string sql = "DELETE FROM Table1 WHERE RowID = @RowID";
    
            SqlCommand deleteRecord = new SqlCommand();
            deleteRecord.Connection = Booksconnection;
            deleteRecord.CommandType = CommandType.Text;
            deleteRecord.CommandText = sql;
    
            SqlParameter RowParameter = new SqlParameter();
            RowParameter.ParameterName = "@RowID";
            RowParameter.SqlDbType = SqlDbType.Int;
            RowParameter.IsNullable = false;
            RowParameter.Value = rowID;
    
            deleteRecord.Parameters.Add(RowParameter);
    
            deleteRecord.Connection.Open();
    
            deleteRecord.ExecuteNonQuery();
    
            deleteRecord.Connection.Close();
    
            booksDataset1.GetChanges();
    
            sqlDataAdapter1.Fill(booksDataset1.Videos);
        }
    }
    

    【讨论】:

    【解决方案2】:

    如果只允许在 DataGridView 中选择一个,您可以这样做。

    假设 DataGridView 中的第一列是数据库中行的标识种子。

    if (BooksGrid.SelectedRows.Count > 0)
    {
         int selectedIndex = BooksGrid.SelectedRows[0].Index;
    
         // gets the RowID from the first column in the grid
         int rowID = int.Parse(BooksGrid[0, selectedIndex].Value.ToString());
    
         string sql = "DELETE FROM Table1 WHERE RowID = @RowID";
    
         // your code for deleting it from the database
    
         // then your code for refreshing the DataGridView
    }
    

    【讨论】:

      【解决方案3】:
      DataGridView datagridview1;
      
      datagridview1.Rows.remove(datagridview1.SelectedRows[0]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多