DataGrid를 다루는 것은 때로는 처음에 힘들 수 있지만 여전히 사용하는 것이 좋습니다. 그런 다음 다시 데이터 그리드를 다시로드 어려운 작업, 나는 보통 데이터베이스에서 삭제되지 않은 단일 행을 삭제
, 어쩌면 이것은 당신을 도울 것입니다 :
는 XAML에서 데이터 그리드이 추가 :
<DataGrid AutoGenerateColumns="False" CommandManager.PreviewExecuted="dataGrid1_PreviewDeleteCommandHandler" Name="dataGrid1" />
다음이 같은 것으로 코드에서 메서드를 만들 : 사용자가 행을 클릭하고 눌러 때
private void dataGrid1_PreviewDeleteCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
if (e.Command == DataGrid.DeleteCommand)
{
//Get the row data before deleting
DataGridRow selectedRow = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(dataGrid1.SelectedIndex);
DataRowView rv = (DataRowView)selectedRow.Item;
// First cell in the row is usually the ID of the row (you can modify that in your database)
string recNoToDelete = rv.Row[0].ToString();
if (recNoToDelete == "")
{
e.Handled = false;
return;
}
if (MessageBox.Show("Are you sure to delete this row?","", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
SqlConnection Conn = new SqlConnection(connectionString);
SqlCommand Comm = new SqlCommand("", Conn);
// Delete
Comm = new SqlCommand("", Conn);
Comm.CommandText = "Delete from Table where [email protected]";
Comm.Parameters.AddWithValue("@field", recNoToDelete);
Conn.Open();
Comm.ExecuteNonQuery();
Conn.Close();
// Reload all the data again in the datagrid after deletion of that record
ReloadData();
}
else
{
//record is not valid or has been deleted or manipulated
//cancel the delete operation
e.Handled = true;
return;
}
}
}
그러나,이 작동 키를 "삭제". 여러 열을 삭제하는 것에 대해서는 아직 파악하지 못했지만 대답을 업데이트 할 것입니다.
이 정보가 도움이되기를 바랍니다.
흠, 문제에 대한 내 설명이 나빴던 것 같습니다. 나는 DB에서 아무것도 삭제하고 싶지 않다. 사실, 선택한 행은 첫 번째 Datagrid에서 사라지고 다른 행에 배치됩니다. 가능한지, 아니면 DataGrids 이외의 다른 것을 사용해야하는 경우 WPF에 익숙하지 않다고 말했던 것처럼 말입니다. 내 질문에 대해 이해할 수 없다면 실례지만 영어는 완벽하지 않습니다. – T2o