preencher uma coluna datagridview combobox com subsônico & vb.net
-
21-08-2019 - |
Pergunta
Como o título diz, eu estou tentando preencher uma coluna de caixa de combinação em um datagridview.
Aqui está o que eu tenho até agora:
Dim lc As System.Web.UI.WebControls.ListItemCollection = _
DataAccess.Part.GetListItems()
dgvcboPart.DataSource = lc
' This is a standalone combo box and it works ok
cboTest.DataSource = lc
Todas as sugestões quanto ao que eu estou perdendo?
Graças Tony W
Solução
A primeira vez que sugiro que você vincular sua coleção para um BindingSource e adicione o BindingSource para o DataGridView (para que você saiba a posição)
Mas a ligação de um ComboBoxCell deve ser bastante para a frente.
Vamos dizer que você tem um tblCurrency DataTable contendo duas colunas ID e nome. Você tem que ligar isto a sua coluna (presumo Coluna 0 ist seu DataGridViewColumn)
dgvcboPart.Columns(0).DataSource = tblCurrency
dgvcboPart.Columns(0).ValueMember = "Id"
dgvcboPart.Columns(0).DisplayMember = "Name"
Em seguida, você pode definir o DataPropertyName à propriedade em sua fonte de dados.
dgvcboPart.Columns(0).DataPropertyName = "Currency_Id"
Seja carful, tblCurrency.Id e Currency_Id tem que ser do mesmo tipo (Int32 e UInt32 não funciona) e você terá um MessageBox desagradável com um StackTrace completo se Currency_Id tem um valor que não está na tblCurrency (assim você deve manipular o evento DataError)
Outras dicas
dgvcboPart.DataSource = lc
dgvcboPart.DataBind()
tem que chamar o método DataBind para a mágica acontecer!