заполнение столбца со списком datagridview с помощью subsonic и vb.net
-
21-08-2019 - |
Вопрос
Как следует из названия, я пытаюсь заполнить столбец со списком в datagridview.
Вот что у меня есть на данный момент:
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
Есть какие-нибудь предложения относительно того, чего мне не хватает?
Спасибо, Тони w
Решение
Сначала я предлагаю вам привязать свою коллекцию к BindingSource, а затем добавить BindingSource в DataGridView (чтобы вы знали позицию)
Но привязка ComboBoxCell должна быть довольно простой.
Допустим, у вас есть DataTable tblCurrency, содержащий два столбца Id и Name.Вы должны привязать это к своему столбцу (я предполагаю, что столбец 0 — это ваш DataGridViewColumn)
dgvcboPart.Columns(0).DataSource = tblCurrency
dgvcboPart.Columns(0).ValueMember = "Id"
dgvcboPart.Columns(0).DisplayMember = "Name"
Затем вы можете установить DataPropertyName для свойства в вашем источнике данных.
dgvcboPart.Columns(0).DataPropertyName = "Currency_Id"
Будьте осторожны, tblCurrency.Id и Currency_Id должны быть одного и того же типа (Int32 и UInt32 не работают). И вы получите неприятный MessageBox с полным StackTrace, если Currency_Id имеет значение, которого нет в tblCurrency (поэтому вам следует обрабатывать DataError событие)
Другие советы
dgvcboPart.DataSource = lc
dgvcboPart.DataBind()
нужно вызвать метод привязки данных, чтобы произошло волшебство!