Pregunta

Como dice el título, estoy tratando de llenar una columna de cuadro combinado en un DataGridView.

Esto es lo que tengo hasta ahora:

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

Cualquier sugerencia en cuanto a lo que me falta?

Gracias Tony W

¿Fue útil?

Solución

La primera vez que sugiero que ates de su colección a un BindingSource y luego añadir el BindingSource a DataGridView (para que sepa la posición)

Sin embargo, atando un ComboBoxCell debe ser bastante sencillo.

Digamos que usted tiene un tblCurrency DataTable que contiene dos columnas ID y NAME. Usted tiene que unir esto a su columna (supongo Columna 0 ist su DataGridViewColumn)

     dgvcboPart.Columns(0).DataSource = tblCurrency
     dgvcboPart.Columns(0).ValueMember = "Id"
     dgvcboPart.Columns(0).DisplayMember = "Name"

A continuación, se puede establecer el DataPropertyName de la Propiedad en el origen de datos.

     dgvcboPart.Columns(0).DataPropertyName = "Currency_Id"

Sé carful, tblCurrency.Id y Currency_Id tienen que ser del mismo tipo (Int32 y UInt32 no funciona) y se obtiene un cuadro de mensaje con una desagradable StackTrace completo si Currency_Id tiene un valor que no está en tblCurrency (por lo que debe controlar el evento DataError)

Otros consejos

dgvcboPart.DataSource = lc
dgvcboPart.DataBind()

tiene que llamar al método DataBind para que la magia suceda!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top