2014-09-09 1 views
0

datagridview (Mydgv1)가 런타임에 만들어집니다. 첫 번째 열은 편집 가능한 콤보 상자 열입니다. 디스플레이 멤버 및 값 멤버를 설정했지만 올바른 디스플레이/값 멤버를 가져올 수 없습니다. 드롭 다운에서 항목을 선택할 때 값/표시 멤버의 값을 드롭 다운의 마지막 항목의 값/표시 멤버로 가져옵니다. 값/표시 멤버가 선택한 항목으로 변경되지 않는 이유는 무엇입니까? 콤보 상자 열.콤보 상자의 선택된 인덱스로 표시/값 멤버가 변경되지 않습니다.

On Form Load Event 

combo.HeaderText = "Item" 
combo.Name = "itemid" 
combo.Items.Clear() 
Dim ds As SqlDataReader 
Dim cmm As New SqlCommand("select itemid from itemdesc", con) 
con.Open() 
    ds = cmm.ExecuteReader 
    If ds.HasRows Then 
     While ds.Read 
      combo.Items.Add(ds(0).ToString) 
      combo.ValueMember = ds("itemid") 
      combo.DisplayMember = ds("itemid") 
     End While 
    End If 
con.Close() 
Mydgv1.Columns.Add(combo) 

On comboboxcolumn's Leave Event 

it = combo.DisplayMember 
MsgBox(it) 
+0

당신이 combobox.Leave 이벤트 또는 combobox.selectedIndexChanged 이벤트 사용을 검색의 SelectedIndexChanged 이벤트를 사용하지 않는? – Markus

+0

Markus, combo box leave event를 사용하고 있습니다. selectedIndexChanged 이벤트를 사용해야합니까? –

답변

0

가 자체 displaymember를 참조하여 선택된 값

Private Sub combo_SelectedIndexChanged(sender as Object, e as EventArgs) Handels combo.SelectedIndexChanged 

    'because your display and valuemember are set as the same 
    MsgBox(combo.SelectedValue.ToString) 
    'if you want the displaymember as the result use 
    MsgBox(combo.Text) 

End Sub 
+0

콤보가 전역 적으로 선언되었습니다 (해당 코드를 추가하는 것을 잊었습니다). combo.text 또는 combo.selectedvalue를 입력 할 수 없습니다. 이 두 속성은 콤보에 대해 존재하지 않습니다. 이러한 속성은 입력하는 동안 제안 팝업에 표시되지 않습니다. 이후 콤보는 프로그램 방식으로 생성 된 열이며, 나는 그들을 다루는 경험이 없습니다. 속성을 추가해야합니다. 명시 적으로 콤보, 나는 콤보, 콤보 상자 형식의 열이되는 것이 정상적인 콤보 상자에있는 모든 것을 가질 것이라고 예상했다. 도와 주셔서 감사합니다. –

+0

콤보 박스를 그렇게 선언 하시겠습니까? 비공개 WithEvents 콤보 ComboBox – Markus

+0

아니요, Dim 콤보를 새 DataGridViewComboBoxColumn으로 작성하고 Mydgv1_EditingControlShowing 이벤트에 콤보 상자 열의 탈퇴 이벤트를 추가했습니다. –

관련 문제