Я предполагаю, что это поле datetime
или date
.Если поле имеет значение varchar
, оно должно быть проанализировано в datetime
или date
в запросе SQL.
Нет необходимости преобразовывать даты в строки или даже добавлять элементы по одному.Вы можете использовать привязку данных для привязки непосредственно к DataTable.
Windows Forms
Поле со списком привязки данных описано в Как: привязать элемент управления ComboBox или ListBox к Windows Forms к данным
Вы также можете использовать свойство FormatString
, чтобы указать, как элемент управления должен отображать даты, например: *
//Use local short date format
cmbStatementDate.FormatString = "d";
//or hard-coded short format
// cmbStatementDate.FormatString = "MM-dd-YYYY";
cmbStatementDate.DisplayMember = "statement_date";
cmbStatementDate.DataSource=dt;
best место для указания FormatString и DisplayMember
хотя сам дизайнер форм, а не файл с выделенным кодом.Это значительно упрощает локализацию и отображение форматов.
Привязка данных означает, что нет необходимости перерисовывать комбинированный список при каждом добавлении нового элемента.Вся комбинация перерисовывается только после загрузки всех данных.
Также можно извлечь свойства элемента управления из файлов настроек или ресурсов.Это позволило бы кому-то локализовать приложение, просто создав новый файл настроек или ресурсов.
В целом локализация, глобализация и привязка данных запекаются в .NET с 2002 года. Вы можете создаватьприложение только один раз и легко локализует его для различных областей без ручного форматирования строк.
Общие сведения о привязке данных можно прочитать в следующих разделах:
Битпредупреждение
Не используйте порядок привязки данных, указанный в документации:
cmbStatementDate.DataSource=dt;
cmbStatementDate.DisplayMember = "statement_date";
Это перекрасит элемент управления дважды если возможно, используя оригинальное значение DisplayMember
.
WPF
Связывание данных и строки форматирования также работают в WPF и, вероятно, еще проще в использовании.Без использования привязки данных можно создать отформатированный комбинированный список с:
<ComboBox x:Name="cmbStatementDate"
DisplayMemberPath="statement_date" ItemStringFormat="d" />
или
<ComboBox x:Name="cmbStatementDate"
DisplayMemberPath="statement_date" ItemStringFormat="dd-MM-yyyy" />
и загрузить данные с помощью:
cmbStatementDate.ItemsSource=dt1;
Этот код выглядиткак привязка данных и все же не .
При связывании данных комбо может связываться со свойствами в codebehind или классе ViewModel, например:
<ComboBox x:Name="cmbStatementDate"
DisplayMemberPath="statement_date"
ItemStringFormat="dd-MM-yyyy"
ItemsSource="{Binding Path=MyDateData}"
SelectedValue="{Binding Path=SelectedDate}" />
В этом случае MyDateData
и SelectedDate
см. свойства в codebehind или ViewModel.
Привязка данных в WPF описана в Обзор привязки данных