В коде, который загружает ваш ComboBox, у вас, вероятно, есть что-то похожее на это:
foreach (DataRow row in YourDataTable.Rows)
{
YourComboBox.Items.Add(row);
}
Вы в основном загружаете каждый полный DataRow в ComboBox, и ComboBox использует значение ToString () по умолчанию для DataRow, которое равно «System.Data.DataRow». Вместо этого вам нужно загрузить ComboxBox с одним из полей DataRow , например:
foreach (DataRow row in YourDataTable.Rows)
{
YourComboBox.Items.Add(row["column1"].ToString());
}
Обновление : в вашем свойстве DisplayMember может быть опечатка. Этот код:
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Rows.Add(1, "Bob");
dt.Rows.Add(2, "Doug");
dt.Rows.Add(3, "Beth");
comboBox1.ValueMember = "ID";
comboBox1.DisplayMember = "Name";
comboBox1.DataSource = dt;
работает правильно, как и ожидалось, но DisplayMember чувствителен к регистру, поэтому, если я изменю строку с последней на последнюю на:
comboBox1.DisplayMember = "name";
все элементы в ComboBox говорят "System.Data.DataRowView". Я думаю, вам просто нужно проверить имена ваших столбцов.