如何从datagridview c#中删除数据?
当我使用下面的代码时,它确实会从datagridview中删除一行,但当我刷新页面时,它不会如何从datagridview c#中删除数据?,c#,winforms,datagridview,local-database,C#,Winforms,Datagridview,Local Database,当我使用下面的代码时,它确实会从datagridview中删除一行,但当我刷新页面时,它不会 private void DeleteData_Click(object sender, EventArgs e) { foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Selected) { data
private void DeleteData_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Selected)
{
dataGridView1.Rows.RemoveAt(row.Index);
break;
}
using (SqlConnection sqcon = new SqlConnection(@"MY CONNECTION STRING"))
{
SqlCommand Scmd = new SqlCommand();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
DataGridViewRow delrow = dataGridView1.Rows[i];
if (delrow.Selected == true)
{
dataGridView1.Rows.RemoveAt(i);
try
{
Scmd.CommandText = "DELETE FROM Technican WHERE ID=" + (i++) + "";
sqcon.Open(); //ADDED
int count = Scmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
}
private void delete data_单击(对象发送方,事件参数e)
{
foreach(dataGridView1.Rows中的DataGridViewRow行)
{
如果(选定行)
{
dataGridView1.Rows.RemoveAt(row.Index);
打破
}
使用(SqlConnection sqcon=newsqlconnection(@“我的连接字符串”))
{
SqlCommand Scmd=新的SqlCommand();
对于(int i=0;i
我应该使用什么从本地数据库和datagridview中删除行?试试这个,
使用“唯一”列或“Id”列从数据库中删除
//Make datagridview cell[0] the unique column in your table.
try
{
Scmd.CommandText = "DELETE FROM Technican WHERE ID='" + datagridview.rows[i].cell[0].value + "'";
sqcon.Open(); //ADDED
int count = Scmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
我认为不能将连接指定给命令对象
SqlCommand Scmd = new SqlCommand();
Scmd.Connection = sqcon;
此外,我更喜欢使用DataGridView.SelectedRows,而不是在网格中循环所有记录
完整代码
private void DeleteData_Click(object sender, EventArgs e)
{
var rowsToDelete = dataGridView1.SelectedRows;
using (SqlConnection sqcon = new SqlConnection(@"MY CONNECTION STRING"))
{
SqlCommand Scmd = new SqlCommand();
Scmd.Connection = sqcon;
sqcon.Open(); //ADDED
foreach (DataGridViewRow row in rowsToDelete)
{
try
{
Scmd.CommandText = "DELETE FROM Technican WHERE ID=" + row.Cells["Id"].Value.ToString() + "";
int count = Scmd.ExecuteNonQuery();
dataGridView1.Rows.Remove(row);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
sqcon.Close();
}
}
根据您将DataGridView绑定到数据源的方式,解决方案可能会有所不同。简单的逻辑是从数据库中删除数据并将DataGridView重新绑定到数据源。看起来DGV没有数据绑定?因此您需要调试sql;名称真的是一个数字吗?计数得到了什么?为什么隐藏异常???永远不要这样做那!在catch中添加一个Console.WrtieLine(例如Message)或类似的名字!!!谢谢,现在我意识到我的名字不是我的错。如何从“名字”开始计数BCI的DATAIT没有数字ID?对于我的合适的C代码有什么建议吗?@ BLCRASP如果你的数据库中每个表中没有一个身份栏,也许你应该考虑你的DB上的重新设计。如果他们有一个身份栏,改变你的查询,以便它包含行的ID,显示给我们的结果SQL!你收到消息了吗?你真的不需要数字ID,但你需要一个唯一的键列。-为什么哦,为什么我要问这些问题?为什么不给我们提供一个关于当前事态的有用描述?仍然不工作根本没有用!!