Как отформатировать столбец даты в DataGrid из VB

У меня есть файл.aspx с сеткой данных в нем:

<asp:DataGrid ID="Gifts"
AutoGenerateColumns="True"
runat="server" AllowSorting="True">
    </asp:DataGrid>

Файл.aspx.vb, связанный с ним, заполняет его объектом сетки данных.

Protected WithEvents Gifts As System.Web.UI.WebControls.DataGrid
Public GiftData As DataTable
Gifts.DataSource = New DataView(GiftData)
Gifts.DataBind()

Это все работает отлично. Однако я хочу отформатировать один из столбцов с определенным форматом даты. Есть ли способ сделать это в коде VB? Я знаю, что могу сделать это в.aspx, указав AutoGenerateColumns="False", а затем явно определив столбцы, но я хочу сделать это в коде, так как это более перспективно для моего приложения.

1 ответ

Решение

Вы можете сделать это в RowDataBound -Eventhandler:

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
     If e.Row.RowType = DataControlRowType.DataRow Then
        'If the first column is a date
        e.Row.Cells(0).Text = String.Format("{0:D}", Date.Parse(e.Row.Cells(0).Text))
     End If
End Sub

Если вы действительно используете старую DataGrid, она работает почти так же. Вместо этого используйте ItemDataBound -Event объекта DataGrid.

Protected Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
     If e.Item.ItemType = ListItemType.Item orelse e.Item.ItemType = ListItemType.AlternatingItem Then
        'If the first column is a date
        e.Item.Cells(0).Text = String.Format("{0:D}", Date.Parse(e.Item.Cells(0).Text))
     End If
End Sub
Другие вопросы по тегам