2015-12-30 7 views
0

У меня есть два поля DateTimePicker, где пользователь может выбрать «Дата From» и «Date To». Когда щелчок checkBox щелкнут, значения в обоих блоках получают формат «MMM», поэтому отображается только месяц (например: Dec). Теперь у меня есть следующее заявление Linq в моем коде, который ищет в DataTable:Непредставленный DateTime для года, месяца и дня

if (checkSearchMonth.Checked) 
{ 
    DateDt.CaseSensitive = false; 
    //DateDt = my DataTable 
    var rowSources = DateDt.AsEnumerable() 
    .Where(myRow => myRow.Field<DateTime>(getSelectedItem).Month > pickDateFrom.Value.Month) 
//getSelectedItem = Column name 
    .Where(myRow => myRow.Field<DateTime>(getSelectedItem).Month < pickDateTo.Value.Month) 
    .OrderBy(myRow => myRow.Field<DateTime>(getSelectedItem)); 

if (rowSources.Any()) 
    dataGridPrev.DataSource = rowSources.CopyToDataTable(); 
} 

Мои DateTimePickers оба имеют ShowUpDown. Теперь, когда я увеличиваю с 'Dec' до 'Jan' в моем From-DateTimePicker, все работает отлично. Увеличение значения до «Feb» вызывает исключение (см. Раздел). Это происходит в

 Application.Run(new Form1()); 

в моей программе.cs. Что здесь не так?

ответ

0

31 декабря -> 31 января в порядке.

31 января -> 31 февраля предоставит вам исключение.

+0

Как избежать этого в моем случае? –

+0

Когда они устанавливают флажок, установите DatePicker в первый месяц месяца выбранной даты Date: new DateTime (x.Year, x.Month, 1) –

+0

Посмотрите на то, что генерирует даты, которые невозможны (например, 31 февраля.) Недействительная дата исходит от * где-то *. – SaxxonPike

0

31 февраля его отказ потерпеть неудачу по понятным причинам.

попробовать поставить «попытаться поймать» и увидеть истинное исключение и поставить проверку в поле

+0

Блок try-catch не дал мне никакой новой информации, но теперь он решен. Благодаря! –

Смежные вопросы