【发布时间】:2023-03-24 05:36:01
【问题描述】:
我正在使用 c#、wpf、DataGrid、SqlDataAdapter、DataTable、MS Sql 服务器 在主窗体上有一个 DataGrid 和一个按钮。 单击该按钮应从 DataGrid 中删除选定的行。然后从数据库中。但这并没有发生!仅来自 DataGrid! 这是我的代码:
private void Button_DeleteSelectedRows_Click(object sender, RoutedEventArgs e)
{
try
{
if (dataGrid.SelectedItems.Count == 1)
{
int selectedIndex = dataGrid.SelectedIndex;
var row = dataTable.Rows[selectedIndex];
row.Delete();
dataAdapter.Update(dataTable);
}
else if (dataGrid.SelectedItems.Count > 1)
{
int count = dataGrid.SelectedItems.Count;
for (int i = count - 1; i >= 0; i--)
{
DataRowView rowView = dataGrid.SelectedItems[i] as DataRowView;
dataTable.AsEnumerable()
.Where(r => r["Name"].ToString() == rowView.Row["Name"].ToString())
.ToList()
.ForEach(r => r.Delete());
dataTable.AcceptChanges();
}
dataAdapter.Update(dataTable);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
P.S.:我不使用 MVVM
非常感谢您的帮助!
【问题讨论】:
-
是否捕获到任何异常?
-
数据表从何而来?如果它是生成的,那么很明显这将不起作用,但是如果它是直接来自数据库的表,这是另一种情况。