2014-03-04 2 views
0

문제점을 설명합니다. Project 2010 서버의 정보가 들어있는 DataSet에서 채워진 DataGrid가 있습니다. 내 DataGrid에서 하나 또는 여러 행을 선택하고 싶습니다. 사용자가 버튼을 클릭하면 해당 행이 원래 DataGrid에서 삭제되고 두 번째 행으로 전송됩니다.DataGrid에서 전체 행 얻기

나는 많은 것을 수색했지만, 이것을 어떻게 할 지 알 수 없다! 아마도 DataGrids를 사용하는 것은 좋은 아이디어 나 idk가 아니지만 WPF를 처음 접했을 때 나에게이 작업을 수행하는 가장 좋은 방법 인 것처럼 보였습니다!

DataGrid에서 다른 것으로 데이터를 옮길 수있는 힌트를 주거나 다른 방법을 사용하면 정말 좋습니다.

답변

0

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; 
      } 
    } 
} 

그러나,이 작동 키를 "삭제". 여러 열을 삭제하는 것에 대해서는 아직 파악하지 못했지만 대답을 업데이트 할 것입니다.

이 정보가 도움이되기를 바랍니다.

+0

흠, 문제에 대한 내 설명이 나빴던 것 같습니다. 나는 DB에서 아무것도 삭제하고 싶지 않다. 사실, 선택한 행은 첫 번째 Datagrid에서 사라지고 다른 행에 배치됩니다. 가능한지, 아니면 DataGrids 이외의 다른 것을 사용해야하는 경우 WPF에 익숙하지 않다고 말했던 것처럼 말입니다. 내 질문에 대해 이해할 수 없다면 실례지만 영어는 완벽하지 않습니다. – T2o

0

여러 행을 삭제하는 방법에 대해. 그런 다음

SelectionMode="Extended" 

selectedItems를이 속성이 선택된 개체의 목록을 반환합니다 데이터 그리드에 확장에

먼저 메이크업 선택 모드는

으로 반복에게 목록을 (당신이 데이터 그리드에 바인딩에 따라 달라집니다)와 항목을 삭제 데이터베이스와 신선한. 예 :

For Each item As <object> In Me.MyDataGrid.SelectedItems 
    --delete record-- 
Next 
0

내 대답을 : 데이터 그리드와 함께 작업하는 것은 나쁜 방법이었다, 내가 직접 대신 데이터 집합으로 작업해야합니다!

관련 문제