2014-11-23 90 views
0

現在,這可能是一個「Noob」問題。但我似乎無法執行任何人們似乎對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(); 

此外,如果有更好的方法來做到這一點,請讓我知道。我對這一切都很陌生。

+0

如何填充DataGrid的Items?捆綁? – Bijan 2014-11-23 18:53:56

+0

@Bizz我已經更新了這個問題,我怎麼把這些信息放在數據網格中。 – Travis 2014-11-23 18:57:08

+1

自從我放置數據表以來已經過去了。使用**實體框架**非常容易。也爲了高效地使用WPF使用** MVVM模式**。 – Bijan 2014-11-23 19:33:48

回答

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

每次從db中拖出行時,都使用同一個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模式&實體框架。