格式动态生成的GridView列标题

时间:2012-06-26 15:16:43

标签: asp.net vb.net header pivot

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

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

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

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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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进行了测试,似乎可行。请注意,列是零索引的。此外,您无需指定行号来设置标题单元格的文本。