#c# #winforms #combobox
#c# #winforms #выпадающий список
Вопрос:
Мне нужно добавить опцию «ВСЕ» в качестве верхнего выбора списка со списком. Я пробовал этот код ниже, но не работает. Ошибка, которую я получаю: «не удается преобразовать из «<анонимный тип: имя строки, значение int>» в «<анонимный тип: строковое название страны, идентификатор страны int>»» Как мне поступить? Пожалуйста, я новичок в этом персонале.
Это мой код
private void LoadCountries()
{
try
{
using (Db db = new Db())
{
var countries = (from u in db.Countries
select new {Name = u.CountryId, Value = u.CountryName }).ToList();
countries.Insert(0, new { Name = "All", Value = -1 }); // here I'am trying to add "All" Option
cmbCountry.DisplayMember = "CountryName";
cmbCountry.ValueMember = "CountryId";
cmbCountry.DataSource = countries;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
Exception inner = ex.InnerException;
while (inner != null)
{
MessageBox.Show(inner.Message);
inner = inner.InnerException;
}
}
}
Заранее благодарю вас
Комментарии:
1.
I have tried this code below but npt working
Что не работает? Ошибки?2. Появляется ли что-нибудь из этого? Я бы этого не ожидал. У вашего анонимного объекта есть свойства
Name
иValue
, но вы устанавливаете элементы отображения и значения вCountryName
иCountryId
3. @Jonesopolis спасибо за ваш ответ. Даже если я пишу без свойств, например, «выберите новый {u.countryName, u.countrynid }). ToList();» Я получаю ту же ошибку. Что мне делать? Еще раз спасибо и оцените, если вы напишете какой-нибудь код, чтобы мне было легче понять. Ошибка «не удается преобразовать из «<анонимный тип: имя строки, значение int>» в «<анонимный тип: строковое название страны, идентификатор страны int>»»
4. @LarsTech, спасибо за ваш ответ. Ошибка, которую я получаю: «не удается преобразовать из «<анонимный тип: имя строки, значение int>» в «<анонимный тип: строковое название страны, идентификатор страны int>»»
Ответ №1:
вы хотите правильно указать свойства DisplayMember и ValueMember:
var countries = (from u in db.Countries
select new { Name = u.CountryName, Value = u.CountryId }).ToList();
countries.Insert(0, new { Name = "All", Value = -1 });
cmbCountry.DisplayMember = "Name"; //use correct property name
cmbCountry.ValueMember = "Value";
cmbCountry.DataSource = countries;
Комментарии:
1. теперь, после обновления вашего кода, я получаю почти аналогичную ошибку «не удается преобразовать из ‘<анонимный тип: имя строки, значение int>’ в'<анонимный тип: имя int, значение string>'»
2. Я скопировал ваши свойства, которые были обратными. Попробуйте обновить
3. Замечательно, это работает. Большое спасибо. Вы спасаете мой день…. Еще раз спасибо!