Как мне манипулировать форматом в DataGridView, который связан с источником данных? - PullRequest
0 голосов
/ 16 июня 2010

Я использую SQL Server 2005 и Visual Studio 2008, C #.

В источнике данных (таблица данных SQL Server) я использую формат DateTime мм / дд / гггг , однако в обзоре форм (DataGridView) пользователи хотели бы см. совершенно другой формат с указанием года, номера недели и дня недели ( yyww, d ) в формате string . Я создал алгоритм для преобразования значений (дата в день недели), но могу ли я заполнить затронутые ячейки yyww, d (строка) вместо mm / dd / yyyy (DateTime)?

Это то, что я тестировал без успеха (и обратите внимание, что в последней строке проблема становится очевидной, поскольку значение ячейки не будет принимать строку во время выполнения - оно все равно будет DateTime .. .)

  private void DataGridViewQueryFindRequests_CellFormatting(
     object sender, DataGridViewCellFormattingEventArgs e)
  {
     string weekAndDay = "";

     DataGridViewCell cell = 
         DataGridViewQueryFindRequests.Rows[e.RowIndex].Cells[e.ColumnIndex];


     if (cell.ColumnIndex == 13 && cell.Value == null)
        mEmptyRow = true;

     if ((cell.ColumnIndex == 14 || cell.ColumnIndex == 15) && !mEmptyRow)
     {
        weekAndDay = ClassWeeksAndDates.dateToWeekNumber(Convert.ToDateTime(cell.Value));

        cell.ValueType = typeof(string);

        cell.Value = weekAndDay;
     }
   }

1 Ответ

0 голосов
/ 18 июня 2010

У меня была похожая проблема всего несколько дней назад.

Старайтесь не изменять событие ValueType in CellFormatting, а только Value.

Чтобы избежать получения FormatException, тогда во время выполнения необходимо преобразовать / проанализировать значение, когда вы хотите сохранить его обратно

Вы можете сделать это в событии CellParsing и преобразовать здесь свой желаемый видимый формат ггг, д в принятый формат даты / времени мм / дд / гггг

Возможно, этот ответ поможет: Ошибка редактирования ячейки DataGridView с десятичным / шестнадцатеричным форматированием

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...