как изменить формат столбца даты и времени, когда он динамически связан в gridview - PullRequest
0 голосов
/ 26 июня 2011
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DateTime dt,dt1;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            dt = Convert.ToDateTime(e.Row.Cells[4].Text);
            e.Row.Cells[4].Text = dt.Month.ToString() + "/" + dt.Day.ToString() + "/" + dt.Year.ToString();
            dt1 = Convert.ToDateTime(e.Row.Cells[5].Text);
            e.Row.Cells[5].Text = dt1.Month.ToString() + "/" + dt1.Day.ToString() + "/" + dt1.Year.ToString();
        }

    }

Это мой код, а столбец с индексом 5 - это дата и время, проблема в том, что он может быть НЕДЕЙСТВИТЕЛЕН, поэтому следующая ошибка появляется, когда

"Строка не была распознанакак действительный DateTime "

Любое решение Пожалуйста, помогите ??!

спасибо!

Ответы [ 3 ]

2 голосов
/ 26 июня 2011

Попробуйте использовать DateTime.TryParse взамен и только если он вернет true, запустите остальную часть кода

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DateTime dt,dt1;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            bool success = DateTime.TryParse(e.Row.Cells[4].Text, dt);

            if(success)
            {
                e.Row.Cells[4].Text = dt.Month.ToString() + "/" + dt.Day.ToString() + "/" + dt.Year.ToString();
                dt1 = Convert.ToDateTime(e.Row.Cells[5].Text);
                e.Row.Cells[5].Text = dt1.Month.ToString() + "/" + dt1.Day.ToString() + "/" + dt1.Year.ToString();
            }
    }
}
0 голосов
/ 26 июня 2011

Как насчет установки свойств BoundField.DataFormatString и BoundField.NullDisplayText, например:

<asp:GridView ID="BoundFieldExample" runat="server">
     <Columns>
          <asp:BoundField DataFormatString="{0:d}" NullDisplayText="Not Found" />
     </Columns>
</asp:GridView>

Выше будут отображаться даты в формате короткой строки даты для текущей культуры и текст «Not Found» для значений Null. См. GridView BoundField Class для получения дополнительной информации.

0 голосов
/ 26 июня 2011

Вы пробовали простой чек?

что-то вроде

if (!String.IsNullOrEmpty(e.Row.Cells[4].Text))
    e.Row.Cells[4].Text = Convert.ToDateTime(e.Row.Cells[4].Text).ToString("MM/dd/yyyy");
else
    e.Row.Cells[4].Text = "-";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...