2014-11-11 4 views
-1

Мой dataGridView_flaggedComments имеет, скажем, 10 строк. Значение в ячейке столбца Comments_Date показывает даты в формате 31/12/2014 12:01 PM, если я выбираю дату (которая без временной части) от comboBox_stockDates (например, 31/12/2014), я хочу, чтобы она фильтровала (и отображала) все строки, которые есть 31/12/2014 xx:xx xx.DataGridView RowFilter По дате

Приведенный ниже код даст нулевой результат, даже если выбранная дата (например, 31/12/2014) соответствует строкам, которые содержат 31/12/2014 xx:xx xx. Любая идея, что здесь не так?

string dtFilter = string.Format("Comments_Date = #{0}#", comboBox_stockDates.SelectedItem.ToString()); 
(dataGridView_flaggedComments.DataSource as DataTable).DefaultView.RowFilter = dtFilter; 

В качестве альтернативы, есть ли способ конвертировать обе даты в строку, а затем сравнивать? Я попытался использовать LIKE-оператор, но ошибка говорит, что нельзя сравнивать между DateTime и String.

Любая помощь и руководство были бы высоко оценены! Спасибо. :)

+0

, например, вы могли бы сделать что-то вроде этого 'строку dtFilter = string.Format ("Comments_Date = {0}", DateTime.Now.ToString ("дд/мм/гггг"));' также вы вам не нужно указывать знаки '#' вообще, вам нужно преобразовать значение DateTime в строку, а затем выполнить сравнение, если я правильно вас понимаю – MethodMan

+0

Привет, DJ KRAZE, спасибо за попытку, но это 'string dtFilter = string.Format (" Comments_Date = {0} ", comboBox_stockDates.SelectedItem.ToString());' не будет работать. Ошибка: 'Невозможно выполнить '=' операцию в System.DateTime и System.Double.' – Shyuan

+0

вы можете показать точный текст, который вы получаете из раскрывающегося списка, что я показал, это то, что вы можете использовать в качестве цели тестирования. где вы получаете system.double ..? – MethodMan

ответ

0

У меня это исправлено, поэтому я предлагаю свой собственный ответ. Это может быть полезно в будущем для тех, кто ищет аналогичный вопрос.

string str = comboBox_stockDates.SelectedItem.ToString(); 
DateTime date = DateTime.ParseExact(str, "dd/MM/yyyy", CultureInfo.GetCultureInfo("en-GB")); 
string dtFilter = string.Format(
    "[Comments_Date] >= '{0} 12:00:00 AM' AND [Comments_Date] <= '{0} 11:59:59 PM'", date.ToString("dd/MM/yyyy")); 
(dataGridView_flaggedComments.DataSource as DataTable).DefaultView.RowFilter = dtFilter; 
Смежные вопросы