1

我在 SQL 中创建了一个存储过程,它产生了一个数据透视表。我已经在 ASP.NET 中成功创建了一个 GridView 来显示这些数据。

但是,我的一些列标题是从数据中动态生成的(AutoGenerateColumns=True),而这些列标题只是日期,因此几乎每次生成表时它们看起来都会有所不同。

这一切都很好,除了列标题的日期格式错误。我知道我可以更改 SQL 在其输出中生成日期的方式,但我不想那样做。我想从网页控制它。

我不认为这会很困难 - 我认为我可以按照在标题行中查找单元格并更改数据字符串格式的方式做一些事情。问题是无论我将代码放在GridView的DataBound还是RowDataBound事件中,标题行中的单元格似乎都是空的,所以我无法重新格式化它们。就好像标题在 DataBound 事件之后的某个时间填充一样,但我不知道何时或如何捕获它。

有人可以帮忙吗?

4

1 回答 1

0

您可以在“RowCreated”事件期间分配列标题。就是这样:

Private Sub GridView1_RowCreated(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
    e.Row.Cells(0).Text = Format(Convert.ToDateTime(e.Row.Cells(0).Text), "yyyy-MM-dd")
    e.Row.Cells(1).Text = Format(Convert.ToDateTime(e.Row.Cells(1).Text), "yyyy-MM-dd")
End Sub

我用动态/自动生成的列对 GridView 进行了测试,似乎可以工作。请注意,这些列是零索引的。此外,您不需要指定行号来设置标题单元格的文本。

于 2012-06-26T22:27:06.467 回答