Преобразовать строку в DateTime в DataGridView - PullRequest
2 голосов
/ 24 октября 2011

У меня есть данные, которые на сервере имеют форму smalldatetime, но когда я возвращаю эти данные в мое приложение, они возвращаются мне как string. Это происходит по разным причинам, которые не относятся к этому вопросу.

Я пытаюсь заполнить эти данные в моем DataGridView, и мне нужно отформатировать их как datetime, указав только дату без времени в формате mm/dd/yyyy. Я пробовал следующее, но данные остаются в формате 'mm/dd/yyyy hh:mm':

this.DataGridView.Columns[7].DefaultCellStyle.Format = "d";

Как мне отформатировать этот столбец данных?

1 Ответ

3 голосов
/ 25 октября 2011

Используйте Column.DefaultCellStyle.Format или установите его в конструкторе

или

dataGridView1.Columns[0].DefaultCellStyle.Format = "MM'/'dd'/'yyyy";

или

Вы можете установить желаемый формат:

dataGridViewCellStyle.Format = "MM/dd/yyyy";
this.date.DefaultCellStyle = dataGridViewCellStyle;
// date being a System.Windows.Forms.DataGridViewTextBoxColumn

Вы можете сделать это так ...

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // If the column is the Artist column, check the
    // value.
    if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Artist")
    {
        if (e.Value != null)
        {
            // Check for the string "pink" in the cell.
            string stringValue = (string)e.Value;
            stringValue = stringValue.ToLower();
            if ((stringValue.IndexOf("pink") > -1))
            {
                e.CellStyle.BackColor = Color.Pink;
            }

        }
    }
    else if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Release Date")
    {
        ShortFormDateFormat(e);
    }
}

//Even though the date internaly stores the year as YYYY, using formatting, the
//UI can have the format in YY.  
private static void ShortFormDateFormat(DataGridViewCellFormattingEventArgs formatting)
{
    if (formatting.Value != null)
    {
        try
        {
            System.Text.StringBuilder dateString = new System.Text.StringBuilder();
            DateTime theDate = DateTime.Parse(formatting.Value.ToString());

            dateString.Append(theDate.Month);
            dateString.Append("/");
            dateString.Append(theDate.Day);
            dateString.Append("/");
            dateString.Append(theDate.Year.ToString().Substring(2));
            formatting.Value = dateString.ToString();
            formatting.FormattingApplied = true;
        }
        catch (FormatException)
        {
            // Set to false in case there are other handlers interested trying to
            // format this DataGridViewCellFormattingEventArgs instance.
            formatting.FormattingApplied = false;
        }
    }
}

Не могли бы вы перейти по этой ссылке для подробнее

...