2011-01-28 7 views
1

표준이 DataGridView이고 마지막 열이 DataGridViewComboBoxColumn입니다. 해당 열의 선택된 행의 인덱스가 변경 될 때 이벤트가 트리거되고 그 데이터를 db에 저장하도록 이벤트를 추가하려고합니다.DataGridViewComboBoxColumn을 OnChange 이벤트에 바인딩하는 방법 (C#)

내가 시간 정도이와 사투를 벌인거야이 발생하게 어떤 이벤트를 찾을 수 없습니다 ...

어떤 도움을 주시면 감사하겠습니다!

+0

당신이 매번 사용자를 의미합니까, 당신은 저장할 마지막 열 콤보 상자에서 항목을 변경 그 행 데이터를 데이터베이스에 저장 하시겠습니까? 그렇다면 좋은 생각이 아닌 것 같습니다. – JPReddy

답변

6

DataGridViewEditingControlShowing 이벤트에서 콤보 상자 SelectedIndexChanged 이벤트에 메서드를 연결하십시오.

private void DGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    if (DGV.CurrentCell.ColumnIndex == comboColumnIndex && e.Control is ComboBox) 
    { 
    ComboBox comboBox = e.Control as ComboBox; 
    comboBox.SelectedIndexChanged += LastColumnComboSelectionChanged; 
    } 
} 

지금 아래의 방법으로 당신은 당신이 원하는대로 수행 할 수 있습니다 : 예를 들어

private void LastColumnComboSelectionChanged(object sender, EventArgs e) 
{ 
    // Do saving work here 
} 
+0

그 트릭을 했어! 타이! – Andrej

+0

이 방법을 사용하면이 이벤트에 여러 번 등록하게됩니다. EditingControl이 표시 될 때마다 이벤트에 다시 등록합니다. – itsho

2

당신은 콤보 그래서, 당신은 당신의 물건 을하지만 모든 인덱스 변경이 타격 될 필요가있다 할 수있는 이벤트 지금

private void dg_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    if (dg.CurrentCell.ColumnIndex == [yourcolumnindex]) 
    { 
    ComboBox cmbox = e.Control as ComboBox; 
    cmbox.SelectedValueChanged -= new EventHandler(cmbox_SelectedValueChanged); 
    cmbox.SelectedValueChanged += new EventHandler(cmbox_SelectedValueChanged); 
    } 
} 

편집 컨트롤입니다이 줄 에 뭔가를 시도 할 수 있습니다 데이터베이스?