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

Foi útil?

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!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top