2014-11-23 4 views
0

이제 "멍청한"질문 일 수 있습니다. 하지만 사람들이 The DataGrid로하는 것처럼 보이는 명령은없는 것 같습니다. 차이점은 무엇이며, 왜 DataGrid 만 가져올 수 있습니까?DataGrid에서 행을 삭제할 수 없습니다.

내 문제는 내가 그들이 데이터베이스에서 뽑아 때 데이터 그리드에서 행을 삭제하는 것을 시도하고 있다는 점이다. SelectRows 명령이 작동하지 않기 때문에 그러나, 어떻게 이해할 수 없습니다.

내가 지금까지 가지고있는 것입니다. 어쨌든 DataGrid를 얻을 수 있습니까?

편집 : 이 내가 데이터 그리드에 대한 정보를 얻는 방법이다.

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    foreach (DataGridViewRow row in userDataGrid.SelectedRows) 
    { 
     if (!row.IsNewRow) 
      dataGridView1.Rows.Remove(row); 
    } 
} 




SqlConnection conn = new SqlConnection(); 
conn.ConnectionString = "Server=----; Database=----; User id=vsd; password=----"; 
conn.Open(); 

dt = new DataTable(); 
sda = new SqlDataAdapter("SELECT TeacherID, ClassName, ClassID FROM CLASS", conn); 
sda.Fill(dt); 
userDataGrid.ItemsSource = dt.DefaultView; 
conn.Close(); 

더 좋은 방법이 있으면 알려 주시기 바랍니다. 나는 이것 모두에 아주 새롭다. 당신은 DB에서 행을 끌어 때

+0

어떻게 당신은 당신의 데이터 그리드의 항목을 기입합니까? 제본? – Bijan

+0

@Bizz 정보를 DataGrid에 저장하는 방법에 대한 질문을 업데이트했습니다. – Travis

+1

데이터 테이블을 따로 보관 해 놓은 이후로 나이가 들어 왔습니다. ** 엔티티 프레임 워크 **로 작업하는 것이 훨씬 쉽습니다. wpf ** MVVM 패턴 **을 사용하여 효율적으로 작업 할 수 있습니다. – Bijan

답변

0

이것은 내가 버튼을 삭제하는 일을 결국 것입니다. 대부분의 답변은 DataGridView에 응답하려고했습니다. 그러나 이것은 WinForms 또는 DataGridView가 아닙니다. 이것은 WPF와 그저 DataGrid입니다.

이것은 내가 그리드와 데이터베이스에서 행을 삭제 한 것입니다.

private void delete_Click(object sender, RoutedEventArgs e) 
    { 
     DataGrid dg = this.aSSIGNMENTDataGrid; 

     var id1 = (DataRowView)dg.SelectedItem; //Get specific ID From    DataGrid after click on Delete Button. 

     PK_ID = Convert.ToInt32(id1.Row["AssignmentID"].ToString()); 

     SqlConnection conn = new SqlConnection(sqlstring); 
     conn.Open(); 

     string sqlquery = "delete from ASSIGNMENT where AssignmentID='" + PK_ID + "' "; 
     SqlCommand cmd = new SqlCommand(sqlquery, conn); 
     cmd.ExecuteNonQuery(); 
     filldatagrid(); 
    } 

    private void filldatagrid() 
    { 
     SqlConnection conn = new SqlConnection(sqlstring); 
     conn.Open(); 

     string sqlquery = "select * from ASSIGNMENT"; 
     SqlCommand cmd = new SqlCommand(sqlquery, conn); 
     SqlDataAdapter adp = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     adp.Fill(dt); 
     aSSIGNMENTDataGrid.ItemsSource = dt.DefaultView; 
     conn.Close(); 
    } 
0

는 DataTable을 할 때마다 동일한 인스턴스를 사용합니다.

DataTable mDataTable = new DataTable(); //class field 

public Constructor() 
{ 
    InitializeComponent(); 

    userDataGrid.ItemsSource = mDataTable .mDataTable; 
}  

void PullData() 
{ 
    mDataTable.Clear(); 

    using (SqlConnection conn = new SqlConnection(ConnectionString)) 
    { 
     conn.Open(); 
     sda = new SqlDataAdapter("SELECT TeacherID, ClassName, ClassID FROM CLASS", conn); 
     sda.Fill(mDataTable); 
    } 
} 

귀하의 문제는 해결되어야하지만 나쁜 접근 방법입니다. Bizz는 MVVM 패턴 & 엔티티 프레임 워크를 살펴 보았습니다.

관련 문제