2013-07-05 2 views
1

나는 창문 양식 응용 프로그램을 만들었습니다. 이 응용 프로그램에서 SQL에 Linq를 사용하여 레코드를 검색 한 다음 해당 레코드를 데이터 표보기에서 선택하고 삭제할 수있게하려고합니다.데이터 격자보기에서 삭제

양식에 매개 변수를 입력하는 텍스트 상자, 검색 버튼, 삭제 버튼 및 데이터 격자가 있습니다.

검색 부분이 올바르게 작동하고 데이터 표가 채워지지만 데이터 표에서 레코드를 클릭하고 삭제하는 방법을 구현하는 방법을 알지 못합니다.

업데이트 - 솔루션을 해결했습니다. 변경된 사항은 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; 
    } 
} 
} 

업데이트 코드 - FullRowSelect에있는 DataGridView의

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

: 컨텍스트에서 데이터 바인딩 된 항목 (학생)

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

행을 선택하기, 제거 그리드에서 삭제하고 ID로 학생을 삭제합니다. –

+0

lazyberezovsky - 선택한 행을 어떻게 처리할까요? – Makin672

답변

1

첫째, 설정 선택 모드. 데이터 소스를 할당 할 때 다음, 당신은 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(); 
    } 
} 
관련 문제