2012-06-26 75 views
1

我在SQL中創建了一個存儲過程,它生成一個數據透視表。我已經在ASP.NET中成功創建了一個GridView來顯示這些數據。GridView的動態生成列標題格式

但是,我的一些列標題是從數據動態生成的(AutoGenerateColumns = True),而這些列標題只是日期,所以幾乎每次生成表時它們都會看起來不同。

這一切工作正常,除了列標題的日期格式是錯誤的。我知道我可以改變SQL在其輸出中生成日期的方式,但我不想這樣做。我想從網頁上控制它。

我不認爲這會很困難 - 我認爲我可以按照找到標題行中的單元格和更改數據字符串格式的方式做一些事情。問題是,無論我將代碼放在GridView的DataBound還是RowDataBound事件中,標題行中的單元格似乎都是空的,因此我無法重新格式化它們。就好像標題在DataBound事件後會填充一些時間,但我不知道何時或如何捕獲它。

任何人都可以幫忙嗎?

回答

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似乎工作。請注意,這些列是零索引的。此外,您不需要指定行號來設置標題單元格的文本。

+0

我試過這個建議(謝謝!)。當我加載頁面時,出現錯誤「字符串未被識別爲有效的日期時間」。我認爲這又是因爲在GridView的生命週期中,頭還沒有被填充。當我簡單地將[code] e.row.cells(4).Text =「Test」[/ code]輸入到RowCreated事件中時,出現錯誤「指定的參數超出了有效值的範圍。參數名稱:索引「。我的GridView有11列。它只能使用0的索引。我不知道這是否提示尚未創建的列... –

+0

您可以添加一些代碼以供我們查看嗎? – Zishan