2015-05-18 2 views
0

Мне нужно форматировать datetime в gridview, чтобы просто показать дату. Я не могу просто изменить формат для indiviidual столбца во время извлечения из sql, потому что код использует генерируемый .net SqlDataAdapter.Fill. Я читал в других вопросах stackoverflow о том, как изменить формат даты в связанных полях, и все же другие ответы требуют использования somehting подобно gridview. Формат, который intellisense не находит и неудивительно дает мне ошибку компиляции без определения, если я пытаюсь просто ввести и использовать его. Я не могу просто изменить свойство в aaspx, потому что это программно сгенерированное gridview.проверка, является ли dataype датой в связанных данных

Есть ли способ перечислить столбцы в gridview и проверить, является ли столбец уже типом даты (они будут входить как datetime из sql, сортировка уже работает правильно, поэтому они не входят в строки) и изменить формат на них до даты? в настоящее время, когда я пытаюсь перечислить столбцы, он пропускает, потому что количество столбцов в gridview во время привязки данных все равно выходит как 0. Или у кого-то есть идея, которая будет менее дорогостоящей, это тысячи строк, поступающих так это может быть намного лучше, если я могу просто форматировать столбец или весь gridview для получения информации о времени и времени. спасибо

EDIT: Я нашел способ, помещая это в gridview_RowDataBound

   foreach (DataControlFieldCell cell in e.Row.Cells) 
       { 
        AutoGeneratedField field = cell.ContainingField as AutoGeneratedField; 
        if (field != null && field.DataType == typeof(DateTime)) 
         cell.Text = DateTime.Parse(cell.Text).ToShortDateString(); 
       } 
+0

, когда вы говорите «программно сгенерированный», вы имеете в виду, что gridview существует в sapx и является автоматическим генератором столбцов или что gridview генерируется динамически и добавляется к свойствам 'Controls' другого контейнера? – fnostro

ответ

0

Даже если SQL выполняется с помощью адаптера данных, у вас есть возможность изменить код в Выберите команду для преобразования ваше поле datetime в строке с помощью функции Convert. Что-то вроде

SELECT field1, field2,..., fieldN, convert(varchar, getdate(), 103) as mydate 

Или, если SELECT, не может никоим образом не может быть изменен, вы можете добавить поле в DataTable на лету и поставить дату в формате строки на этом поле (но это отнимает много времени) и может быть решением, только если вы можете скрыть свои столбцы gridview, чтобы отобразить только форматированную строку.

Лучше, на мой взгляд, изменить выбор или, что гораздо лучше, если вам нужен конкретный вид данных, просто создайте правильный SQL-запрос с необходимыми данными, вызовите его с помощью DataReader и создайте datatable to Используйте как источник для gridview и оставьте стандартную команду выбора более конкретным. HTH

+0

Я действительно использовал выбор для изменения зашифрованных полей из varbinarychar на сегодняшний день> нашел способ, хотя в привязке к данным. Я добавлю это к вопросу – Davidp04

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