我有一个Gridview,其中有一个时间戳作为其中一行。当我从数据库中读取数据时,数据的格式为(mm / dd / yyyy hh:mm:ss)。我已经想出如何使用以下代码格式化我想要的方式(mm / dd / yyyy)和(hh:mm:ss):
Dim numrows2 = GridView1.Rows.Count
For i = 0 To numrows2 - 1
Dim acc = Left(GridView1.Rows(i).Cells(0).Text, 10)
GridView1.Rows(i).Cells(0).Text = acc
Next i
问题是这个gridview有5个页面,这只适用于当前页面。例如,
所以它基本上是格式化当前页面,而不是所选页面。
我或者每次都需要能够格式化gridview的每一行,或者能够找出所选页面并格式化该页面。我不知道该怎么做。
任何帮助都将不胜感激。
答案 0 :(得分:2)
在数据字段中使用格式如下:
<asp:BoundField HeaderText="Date" DataField="SomeDate" DataFormatString="{0:MM/dd/yyyy}">
答案 1 :(得分:1)
你使用boundfield吗?
有一个名为DataFormatString的属性,要将您想要的格式设置为“MM / dd / yyyy”,那么您不需要在后面的代码中进行任何格式化
答案 2 :(得分:1)
使用 DataFormatString ,但不要忘记添加 HtmlEncode =“false”:
<asp :BoundField DataField="DateColumn"
DataFormatString="{0:MM/dd/yyyy}"
HtmlEncode="false" />
答案 3 :(得分:0)
您可以使用某些属性将列格式化为设计时或运行时所需的日期,并且将对所有行执行此操作。
这是一个关于它的教程。有一个很好的表格,你可以使用.... http://shawpnendu.blogspot.com/2009/04/how-to-format-gridview-rowscolumns-in.html
答案 4 :(得分:0)
您要做的是使用RowDataBound事件并在此时进行数据绑定。可以根据所需的格式代码覆盖DateTime对象的ToString方法。这样做是这样的:
Private Sub FormatMyGridView _
(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
Handles gvMyGridView.RowDataBound
Dim drItems As DataRow
' Grid Column Layout (Handy for formatting multiple items)
' 0 - View Details Hyperlink
' 1 - Id
' 2 - Department #
' 3 - Request Type
' 4 - Employee Number
' 5 - Employee Name
' 6 - Status
' 7 - Effective Date
If e.Row.RowType = DataControlRowType.DataRow Then
drRequest =DirectCast(e.Row.DataItem, System.Data.DataRowView).Row
e.Row.Cells(7).Text = drItems.MyDateField.ToString("MM/dd/yyyy")
End If
End Sub
答案 5 :(得分:0)
执行此操作的最佳方法可能是使用ObjectDataSource并绑定到它,您可以在那里格式化日期数据并返回一些业务对象。 ObjectDataSource还允许比简单的SqlDataSource更有效的分页(我假设你正在使用它?)。
如果您只是运行动态SQL查询,则可以格式化返回的数据(如:)
SELECT CONVERT(VARCHAR,CONVERT(DATETIME,OriginalDateValue,101),101)
这有帮助吗?如果您需要ObjectDataSource的特定代码,请这样说。