2010-04-05 80 views
5

我有一個綁定到DataSet的DataGridView。它有DateCreated,Weight,DateUsed列。這三列在DataGridView上佔用的空間幾乎是全屏。如果視圖足夠寬以支持第二組這些柱,是否有可能讓這些列回到頂部?因此,通過標題可以讀取DateCreated,Weight,DateUsed,DateCreated,Weight,DateUsed。然後當單擊一行時,只有3個單元格會突出顯示,而不是全部六個。有什麼可以提供這種功能嗎?多「列」DataGridView C#

+1

Windows Forms還是ASP.NET? – 2010-04-05 17:38:15

+0

Windows Forms C# – Wesley 2010-04-05 17:48:12

回答

2

我不知道任何開箱即用的東西。

您可以自己創建該效果。您需要將實際數據與數據表示分開。而不是每個網格行的單個DataRow,您需要將它們合併在一起以在單個行上顯示多行。

所以你的helper方法,不妨做到以下幾點:

  • 在DataGridView的寬度相較於行
  • 的數量確定列需要多少數據行可見
  • 建立額外一個新的DataTable列設置爲代表每列
    • 示例:DateCreated1,重量1,DateUsed1,DateCreated2,加權2,DateUsed2等
  • 填充的DataTable與原始數據集
  • 綁定的DataGridView到新表

一些注意事項:用戶可以對數據進行排序?如果是這樣,你必須自己寫。

您是否需要使用此視圖添加新行?這種看法聽起來很難。

+0

不,用戶無法排序,添加或刪除行。感謝您的輸入。雖然不是我正在尋找的東西,但這似乎是我必須去的方式。 – Wesley 2010-04-07 12:52:50

0

非常難以理解你究竟是什麼意思,但我確定它可以用一些JS功能來完成,在這裏你計算列寬和瀏覽器/屏幕寬度並相應地調整DataGridView。設置「td」單元格寬度可能會遇到一些問題,因此更改爲CSS提供程序並將其渲染爲div和跨度可能是一種選擇。

+0

這不是一個Web應用程序,只是您的Windows Forms應用程序的標準運行。 – Wesley 2010-04-05 17:46:43

0

可能很俗氣,但只是並排粘貼兩個DGV,關閉左側DGV的垂直滾動條,將每個DGV與一半數據綁定,並用右側DGV的滾動條控制它們。

除此之外,我認爲你需要一點點的編碼才能讓單個DGV做你想做的事。

1

我意識到你在四月發佈了這個問題,所以你可能已經找到了解決方案,或者轉移到其他方面。但是,我最近寫的確實基本上你形容真是一個典型的控制,你可以從這裏到位桶免費下載:

https://bitbucket.org/dtao/taocontrols/downloads

Screenshot of SplitDataGridView control

如果你有興趣,給SplitDataGridView控制開槍,讓我知道你的想法。