ASP / VB .NET格式化gridview的每一行?

时间:2009-09-14 19:52:42

标签: .net asp.net vb.net gridview

我有一个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个页面,这只适用于当前页面。例如,

  1. 页面的初始加载第一页将正确格式化
  2. 我点击了第3页,此代码将格式化第1页,因此第3页将不会被格式化
  3. 我点击了第1页,代码将格式化第3页
  4. 所以它基本上是格式化当前页面,而不是所选页面。

    我或者每次都需要能够格式化gridview的每一行,或者能够找出所选页面并格式化该页面。我不知道该怎么做。

    任何帮助都将不胜感激。

6 个答案:

答案 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的特定代码,请这样说。