Проблема заключается в следующем:C# DataGridView: Как отображать десятичного столбец из источника данных в качестве колонки TimeSpan в DataGridView
У меня есть DataGridView (DGV) с «N» колонны, «Источник данных таблицы» (DSt), на которые ссылается этот DGV и «панель поиска» (sB) с таким же количеством слотов, что и столбцы в DGW. Каждый слот фильтрует свой столбец.
Существует один TimeSpan - столбец «Duration» в DGV, который дает мне проблемы. Я хочу, чтобы иметь возможность фильтровать его, введя десятичные критерии в относительный слот в sB.
Как, например, если я хочу найти записи с длительностью более 1 часа 32 минуты 40 секунд, я бы набрал «> (1 + 32/60 + 40/3600)» в слот, и было бы легко перенести в DataView RowFilter (просто добавьте имя столбца в начале).
Проблема заключается в том, что существует формат «hh: mm: ss» этого столбца TimeSpan и единственный способ его фильтрации, который я вижу, сделав выбор через Linq, получив Dataview из этого выбора и переключив существующие Datasourse к этому DataView:
EnumerableRowCollection<DataRow> query=from order in myDataSourceTable.AsEnumerable()
where order.Field<TimeSpan>("Duration").Seconds > (1*3600+32*60+40)
select order;
DataView daView = query.AsDataView();
myDataGridView.DataSource = daView;
Однако этот метод я стараюсь избегать, так что я не жонглировать с несколькими источниками данных.
На данный момент я могу представить себе два решения этой:
-
- , чтобы добавить столбец с теми же номерами, что и в колонке TimeSpan, но в десятичной форме в моей DS и скрыть его в DGV. Затем я применил бы фильтр, предназначенный для столбца TimeSpan, для этого скрытого столбца. Очевидно, что это не очень эффективно.
-
- сделать некоторые трюк, который мы все видели в EXCEL, где вы можете фильтровать через DateDime значения, используя целые числа и десятичные. Я надеюсь узнать, как это сделать.
Так что мой вопрос:
Может DS с десятичной munbers будет отображаться на DGV как числа TimeSpan таким образом, что DS сохранит оригинальный формат десятичного?
Спасибо за ваш комментарий, но как я толстая или это не работает. Если я правильно понял, вы упомянули DefaultCellStyle как способ автоматического преобразования формата данных, полученных от источника данных. Но насколько я понял, это свойство фактически устанавливает формат ячейки по умолчанию при создании пустого DataGridView. В моем случае все форматы данных были импортированы из моего DataSourse, поэтому я не могу вручную изменить уже существующие форматы. Я могу это сделать, только изменив свой DataSource, но это то, чего я пытаюсь избежать. – SpookySpoon