2010-11-05 61 views
0

嘿,我想讓我的數據網格可打印。要做到這一點,我試圖隱藏最後4列。我點擊了一個可打印的按鈕,讓最後4列消失。到目前爲止,我還沒有做好這項工作。隱藏數據網格的列(asp.net/c#)

我曾嘗試:

ProductsGrid.Columns[6].ControlStyle.Width = -1; 

ProductsGrid.Columns[6].Visible = false; 

注:這些列做在他們的數據。也許這是我的問題的一部分。另外,我需要列的標題消失。

感謝您的任何提示。

編輯:我讓他們在我的按鈕單擊命令不可見。我沒有使用生成的列,所以我認爲它設置爲false。我有點厭倦了這個問題並且離開了工作,直到下週中旬纔會回來,所以我可能不得不暫時找到解決方案。感謝大家的評論,我會盡快查看。對不起,我無法及時提供更多反饋。

編輯x2:我必須在某種回傳或其他方式中處理它嗎?

+0

ProductsGrid.Columns [6] .Visible = false;應該工作。我不是100%肯定的,但我認爲你必須再次調用DataBind()來更新它。除非您重新綁定數據,否則控件不會在頁面上更新。 (我將它設置爲評論而不是答案而不是答案,因爲我不是100%確定的,而不是在我的Dev PC上進行測試。) – David 2010-11-05 22:55:02

+1

何時何地隱藏您的列?讓它們隱形應該可以工作(不需要重新綁定)。你是否自動生成列? – 2010-11-05 23:01:27

+0

如果失敗了,通過複製和粘貼代碼生成第二個頁面進行打印應該不會太困難,然後從標記中的打印頁面中刪除列並使用「易於打印的版本」鏈接到它鏈接。或者你可以設置表頭的單元格到一個名爲「noprint」的css類,並有一個css用於顯示,另一個用於打印,在第二個css中設置爲false ... – David 2010-11-05 23:04:02

回答

2

如果您有AutoGenerateColumns =「True」,那麼只需設置visible = False就無法使它們看不見,因爲automatically generated bound column fields are not added to the Columns collection

VB.Net,但我認爲你的想法:

Private Sub setPrinterView() 
    For Each tr As TableRow In DirectCast(Me.GridView1.Controls(0), Table).Rows 
     For i As Int32 = 1 To 4 
      If tr.Cells.Count - i < 0 Then Exit For 
      tr.Cells(tr.Cells.Count - i).Visible = False 
     Next 
    Next 
End Sub 

如果的AutoGenerateColumns設置爲False,你只需要進行列無形無重新綁定網格。