Как отформатировать столбец даты в 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