2013-07-05 141 views
1

我創建了一個Windows窗體應用程序。我希望此應用程序能夠使用Linq to SQL來搜索記錄,然後從數據網格視圖中選擇該記錄並將其刪除。從數據網格視圖刪除

該表單包含一個輸入參數,搜索按鈕和刪除按鈕以及數據網格的文本框。

我有搜索部分正常工作,數據網格已填充,但不知道如何實現單擊數據網格中的記錄並刪除它。

更新 - 我已經解決了解決方案。只對btn_Delete_Click事件處理程序進行了更改,因此我在主代碼之後包含了他的按鈕的更新代碼。

namespace DeleteForm 
{ 
public partial class Form1 : Form 
{ 
    LinqtoStudentDataContext linqStud = new LinqtoStudentDataContext(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void btnDelete_Click(object sender, EventArgs e) 
    { 

    } 

    private void btnSearch_Click(object sender, EventArgs e) 
    { 
     var lastName = from stud in linqStud.Students 
         where txtFind.Text == stud.LastName 
         select stud; 

     dataGridView1.DataSource = lastName; 
    } 
} 
} 

更新代碼 -

private void btnDelete_Click(object sender, EventArgs e) 
    { 
     if (this.dataGridView1.SelectedRows.Count > 0) 
     { 
      dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index); 
      //linqStud.Students.DeleteAllOnSubmit(); 
      linqStud.SubmitChanges(); 
     } 
    } 
+0

獲取選定的行來自網格,並通過ID刪除學生。 –

+0

lazyberezovsky - 我將如何做選定的行部分雖然? – Makin672

回答

1

首先,設置選擇的DataGridView的模式FullRowSelect。接下來,分配數據源時,你應該叫ToList() - 你不能使用查詢作爲數據來源:根據上下文

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    var lastName = txtFind.Text; 
    var students = from stud in linqStud.Students 
        where stud.LastName == lastName 
        select stud; 

    dataGridView1.DataSource = students.ToList(); 
} 

獲得所選行,並刪除數據綁定物品(學生):

private void btnDelete_Click(object sender, EventArgs e) 
{ 
    foreach (DataGridViewRow row in dataGridView1.SelectedRows) 
    { 
     var student = row.DataBoundItem as Student; 
     linqStud.Students.Remove(student); 
     linqStud.SaveChanges(); 
    } 
}