Столбец DateTime в .NET 6 datagridviewbindingsource.filter по поисковому запросуC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Столбец DateTime в .NET 6 datagridviewbindingsource.filter по поисковому запросу

Сообщение Гость »

В моем dataGridView1 у меня есть связанный источник данных из класса DataTable. Что происходит: я сначала читаю XML с помощью DataSet.readXml(myFile), затем для каждой строки в DataSet я конвертирую столбец даты в DateTime перед добавлением строки в my DataTable, который я буду использовать для привязки к объектуbindingSource.
Теперь проблема в том, что в моем приложении, где у меня есть функция поиска, когда я ищу число, например 24, он должен выполнить поиск по всем столбцам в каждой из моих строк COne, CTwo, DateColumn1 и вернуть все строки, в столбце которых есть число 24, включая DateColumn1, который имеет тип DateTime, а не строку. Это означает, что мне нужно каким-то образом выполнить частичное сопоставление дат, но я не знаю, как это сделать. Я пробовал несколько запросов фильтрации, но это тоже не работает.
Например, если поисковый запрос снова представляет собой число типа 24, а в моем dataGridView1 У меня есть три строки со следующими данными

Код: Выделить всё

             COne      CTwo       DateColumn1
r1: "Hi 5"  |  "Hi 30" | 3/20/2024
r2: "Hi 24" |  "Hi 1"  | 3/2/2025
r3: "Hi 5"  |  "Hi 24" | 3/20/2026
Исходя из вышеизложенного, поиск по 24 должен возвращать все три строки, поскольку число 24 есть хотя бы в одном из столбцов. Прямо сейчас DateColumn1 установлен как DateTime, поэтому он не сравнивается, а row1 r1 не возвращается с двумя другими строками

Код: Выделить всё

DataSet ds = new DataSet();
ds.ReadXml(file);
DataTable dt = ds.Tables[0].Clone();
dt.Columns["DateColumn1"]!.DataType = typeof(DateTime);

foreach (DataRow dr in drs)
{
string dateOne = dr["DateColumn1"].ToString()!;
string parsedDate = DateTime.Parse(dateOne, new CultureInfo("en-US")).ToString("M/dd/yyyy");
dr["DateColumn1"] = parsedDate;
dt.ImportRow(dr);
}

...
dataGridBindingSource.DataSource = dt;

// Search Function
private void HandleSearch()
{
string[] columns = [
"COne",
"CTwo",
"DateColumn1"
];

string searchValue = this.searchTextBox.Text;
string filter = "";

for (int x = 0; x < columns.Length; x++)
{
filter += $"({columns[x]} LIKE '%{searchValue}%' OR Convert ({columns[x]}, 'System.String') LIKE '%{searchValue}%')";

if (x != columns.Length - 1)
{
filter += " OR ";
}
}

this.dataGridBindingSource.Filter = filter;
}
Логика предложения Convert в строке фильтра взята из этого сообщения SO, но, похоже, она тоже не работает.
ТАК-пост


Подробнее здесь: https://stackoverflow.com/questions/782 ... earch-term
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как фильтровать сообщения по типу, провинции, городу и поисковому запросу с нумерацией страниц на Livewire Volt
    Anonymous » » в форуме Php
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Получить все ключи первого уровня строк в двухмерном массиве, где значение столбца частично соответствует поисковому зап
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Struts2 и вызывают ошибку
    Anonymous » » в форуме JAVA
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Razor jQuery Select Filter Filter
    Anonymous » » в форуме Html
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Razor jQuery Select Filter Filter
    Anonymous » » в форуме Jquery
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»