Вопрос: формат времени до сотых долей секунд в DGV | Добавлено: 05.03.09 18:50 |
Автор вопроса: ![]() |
Господа. может кто подскажет, а то я что-то запутался и в МСДН не могу нужного найти.
У меня в DatagridView падают значения из базы SQL по запросу, где одно поле имеет формат Time. И если встречаются доли секунд то он мне выводит число с кучей последующих нулей, как мне настроить формат столбца DGV, чтобы он выводил только первые 2 числа доли секунды: т.е. в базе находится число 00:00:00.1000000 (в таком же виде оно выводится в датагридвиев), а мне надо чтобы в ДГВ отобразилось 00:00:00.1 попробовал поменять в самой базе длину символов после запятой до 2, а в ДГВ выводит всё равно все 7 цифр. |
Ответы | Всего ответов: 17 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 295 |
Профиль | Цитата | #1 | Добавлено: 06.03.09 02:57 |
|
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #2 | Добавлено: 06.03.09 04:49 |
Math.Round(...)
и как же ты там собрался DateTime округлять, когда Math.Round только Decimal и Double принимает? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 295 |
Профиль | Цитата | #3 | Добавлено: 06.03.09 05:35 |
и как же ты там собрался DateTime округлять, когда Math.Round только Decimal и Double принимает? Наверно гоню.
Недочитал. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #4 | Добавлено: 06.03.09 06:38 |
Тебе просто для этой колонки надо задать соответствующую строку форматирования и выводить данные в нужном формате. К примеру вот такой код:
![]() Console.WriteLine(t.ToString("HH:mm:ss.ff" ![]() выведет время с 2 знаками поле запятой. Ты же наверняка выводишь данные через скриплет Eval, вот его приведи к типу DateTime(это обязательно надо сделать потому что он возвращает object) и дальше уже ToString с нужным тебе форматом. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #5 | Добавлено: 06.03.09 06:40 |
(*ворчливо) блин.. ваши добаные смайлики.. ведь был же нормальный форум.. так нет же.. детство в одном месте заиграло.. смайликов нафтыкали
|
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() Вопросов: 8 Ответов: 19 |
Профиль | Цитата | #6 | Добавлено: 06.03.09 12:03 |
в самом SQL тип данных для данного столбца выбран - "Time", при заполнении DataTable SqlDataAdapterom тип столбца становится TimeSpan и соответственно при привязке DataGridView через DataSource этот столбец остаётся с типом TimeSpan. Весь вечер убил на попытку как-нибудь привести это к какому-нибудь форматированному виду или преобразовать во что-нибудь отличное от timespan и что-то не получилось. Странно что никак нельзя удалить эти последующие нули, да и вообще зачем он их выводит....
Может быть кто-нить попробовал бы эту цепочку с выводом данных из SQL в DataGridView и отписал бы пример с кодом? |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #7 | Добавлено: 06.03.09 13:39 |
Может быть кто-нить попробовал бы эту цепочку с выводом данных из SQL в DataGridView и отписал бы пример с кодом?
да тут и пробовать нечего.. задача тривиальная. 1. Открываешь форму и выделяешь свой DataGridView 2. В Свойствах находишь Columns и тыкаешь туда (либо просто жмешь Edit Columns) - открывается диалог Edit Columns3. Слева выделяешь твой столбец в котором отображается время, а справа ищешь DefaultCellStyle и жмешь туда.. открывается диалог CellStyleBuilder 4. В этом диалоге находишь Format и вводишь туда HH:mm:ss.ff, если надо просто время то можешь набрать просто T либо там же ткнешь на кнопку и выберишь формат из списка 5. Наслаждаешься полученным результатом (это очень важно) |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() Вопросов: 8 Ответов: 19 |
Профиль | Цитата | #8 | Добавлено: 06.03.09 14:28 |
у меня DGV пустой изначально, колонки формируются после выгрузки данных из БД (там куча условий, так что колонки и данные могут быть каждый раз разные)
Пробовал уже после формирования данных делать через комманду: DataGridView.Columns(номер_колонки).DefaultCellStyle.Format = "T" или DataGridView.Columns(номер_колонки).DefaultCellStyle.Format = "HH:mm:ss.ff" но ничего не изменятся, как выводилось "00:00:00.1000000" так и выводится.... вот и думаю что надо копать куда-глубже или где в другом месте смотреть |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #9 | Добавлено: 06.03.09 16:45 |
мда.. наступил ты брат на грабли... судя по документации TimeSpan не поддерживает toString("X"![]() |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() Вопросов: 8 Ответов: 19 |
Профиль | Цитата | #10 | Добавлено: 06.03.09 17:51 |
да к сожалению toString(format) не поддерживается timespan-ом, об этом я в курсе. А как извращаться? есть идеи? |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #11 | Добавлено: 06.03.09 18:10 |
А как извращаться? есть идеи?
ну первое что приходит в голову это 1.после привязки к данным изменить тип данных колонки
2.Подписаться на форматирование ячейки и привести строку к нужному виду
криво,конечно, но что то пока идей больше нету.. |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #12 | Добавлено: 06.03.09 18:13 |
либо через DataBindings что то мутить.. но это, по сути, такие же костыли. |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() Вопросов: 8 Ответов: 19 |
Профиль | Цитата | #13 | Добавлено: 06.03.09 22:17 |
спасибо за пример, я его в VB перевёл.
не очень то и криво, если в одну строчку, то вполне прямо))) вообще выгрузилось то что надо, убрал дни и часы и получил искомое, правда он мне 3 символа после запятой выводит независимо от того сколько я проставляю в параметре span.Milliseconds.ToString, видимо это уже какое-то ограничение может быть срабатывает. а как можно не криво сделать? |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #14 | Добавлено: 06.03.09 23:09 |
а как можно не криво сделать?
попробуй еще такой варинт..
|
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() Вопросов: 8 Ответов: 19 |
Профиль | Цитата | #15 | Добавлено: 07.03.09 12:29 |
в другом месте ещё подсмотрел вариант, получилось ещё короче, но в принципе смысл тот же:
за что они так ограничили timespan не понятно)) |
|