Управление C # .NET ComboBox - PullRequest
       12

Управление C # .NET ComboBox

2 голосов
/ 21 сентября 2009

У меня есть приложение, работающее на портативном устройстве с .NET compact framework, использующее C # .NET. Проблема, с которой я сталкиваюсь, заключается в том, что элемент управления ComboBox ведет себя очень нечетко, иногда он показывает содержимое, но иногда он просто показывает тип строки System.DataRow в ComboBox. Хотя он показывает эту строку System.DataRow, но он все еще имеет свои значения. У меня есть событие selectedIndexChanged в выпадающем списке, и оно возвращает правильное значение, даже если пользовательский интерфейс показывает System.DataRow в качестве отображения.

Заранее спасибо. Приветствия.

Ответы [ 2 ]

3 голосов
/ 21 сентября 2009

В коде, который загружает ваш 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". Я думаю, вам просто нужно проверить имена ваших столбцов.

1 голос
/ 22 сентября 2009

Спасибо за вашу помощь. Я понял проблему. Таким образом, сценарий заключался в заполнении поля со списком значениями из базы данных. Запрос к базе данных возвращал мне три столбца ID, имя, размер. Но мне нужно было всего 2 столбца Name и ID для выпадающего списка. Я получал значения из базы данных, а затем добавлял новую строку на стороне клиента в эту таблицу данных перед заполнением в выпадающем списке. В этой строке на стороне клиента я добавил только 2 столбца Name и ID, но не размер. И эта штука все набивала. Это странно, но теперь работает нормально. Я думаю, что проведу еще какое-то тестирование и посмотрю, возникнет ли эта ошибка снова.

Спасибо за помощь в любом случае.

...