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

ASP/VB.NET格式化gridview的每一行?,.net,asp.net,vb.net,gridview,.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)

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

  • 第一页的初始加载将正确格式化
  • 我点击第3页,这段代码将格式化第1页,所以第3页不会被格式化
  • 单击第1页,代码将格式化第3页
  • 所以它基本上是格式化当前页面,而不是所选页面

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


    如果您有任何帮助,我们将不胜感激。

    您可以在设计时或运行时使用某些属性为列设置所需日期的格式,并且它将对所有行进行设置

    这里有一个关于它的教程。有一个很好的格式表,你可以使用。。。。

    您可以使用某些属性在设计时或运行时为列设置所需日期的格式,它将对所有行进行设置

    这里有一个关于它的教程。有一个很好的格式表,你可以使用。。。。 是否使用边界字段

    有一个名为DataFormatString的属性,要获取所需的格式,请将其设置为“MM/dd/yyyy”,然后您根本不需要在代码隐藏中进行任何格式化

    是否使用boundfield


    有一个名为DataFormatString的属性,要获取所需的格式,请将其设置为“MM/dd/yyyy”,然后您根本不需要在代码中进行任何格式化

    <asp:BoundField HeaderText="Date" DataField="SomeDate" DataFormatString="{0:MM/dd/yyyy}">
    

    在数据列中使用如下格式:

    <asp:BoundField HeaderText="Date" DataField="SomeDate" DataFormatString="{0:MM/dd/yyyy}">
    

    您要做的是使用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
    

    您要做的是使用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
    

    最好的方法可能是使用ObjectDataSource并绑定到它,您可以在那里格式化日期数据并返回一些业务对象。ObjectDataSource还允许比简单的SqlDataSource更高效的分页(我假设您正在使用它)

    如果您只是在运行动态SQL查询,您可以在那里格式化返回的数据(类似于:

    选择CONVERT(VARCHAR,CONVERT(DATETIME,OriginalDateValue,101),101)


    这有用吗?如果您需要一个ObjectDataSource的特定代码,就这么说。

    最好的方法可能是使用ObjectDataSource并绑定到它,您可以在那里格式化日期数据并返回一些业务对象。ObjectDataSource还允许比简单的SqlDataSource更高效的分页(我假设您正在使用它)

    如果您只是在运行动态SQL查询,您可以在那里格式化返回的数据(类似于:

    选择CONVERT(VARCHAR,CONVERT(DATETIME,OriginalDateValue,101),101)


    这有用吗?如果您需要ObjectDataSource的特定代码,只需说出来。

    使用DataFormatString,但不要忘记添加HtmlEncode=“false”

    <asp :BoundField DataField="DateColumn"
     DataFormatString="{0:MM/dd/yyyy}"
     HtmlEncode="false" />
    

    使用数据格式字符串,但不要忘记添加HtmlEncode=“false”

    <asp :BoundField DataField="DateColumn"
     DataFormatString="{0:MM/dd/yyyy}"
     HtmlEncode="false" />
    
    
    
    附加的链接klablanche比我的示例显示得好得多附加的链接klablanche比我的示例显示得好得多