2010-04-05 20 views
5

Mam DataGridView, które jest przypisane do DataSet. Ma kolumny DateCreated, Weight, DateUsed. Te trzy kolumny nie zajmują dużo miejsca w poziomie na DataGridView, która jest prawie na pełnym ekranie. Czy możliwe jest zawinięcie tych kolumn do góry, jeśli widok jest wystarczająco szeroki, aby obsługiwać drugą grupę tych kolumn. Tak więc w nagłówku przeczytano DateCreated, Weight, DateUsed, DateCreated, Weight, DateUsed. Następnie, po kliknięciu rzędu, podświetlone zostaną tylko 3 komórki, nie wszystkie sześć. Czy jest coś, co może zapewnić tę funkcjonalność?Wielu "kolumny" DataGridView C#

+1

Windows Forms lub ASP.NET? –

+0

Windows Forms C# – Wesley

Odpowiedz

2

Nie znam czegoś takiego po wyjęciu z pudełka.

Możesz samemu stworzyć ten efekt. Będziesz musiał oddzielić rzeczywiste dane od prezentacji danych. Zamiast pojedynczego wiersza DataRow na siatkę, musisz scalić je, aby wyświetlić wiele wierszy w jednym wierszu.

Więc metoda pomocnika może wykonać następujące czynności:

  • Porównaj szerokość DataGridView do liczby wierszy
  • Ustal ile datarows kolumny byłby widoczny
  • Zbuduj nowy DataTable z dostawką kolumna wyznacza do reprezentowania każdej kolumnie
    • Przykład: DateCreated1, Waga1, DateUsed1, DateCreated2, Weight2, DateUsed2 itp
  • Wypełnianie DataTable z oryginalnym zestawem danych
  • Bind DataGridView do nowej tabeli

kilka uwag: można posortować dane użytkowników? Jeśli tak, będziesz musiał napisać to sam.

Czy musisz mieć możliwość dodawania nowych wierszy przy użyciu tego widoku? Z takim poglądem brzmi to bardzo trudno.

+0

Nie, użytkownicy nie mogą sortować, dodawać ani usuwać wierszy. Dzięki za wkład. Chociaż nie jest to dokładnie to, czego szukam, wydaje mi się, że muszę to zrobić. – Wesley

0

Bardzo trudno zrozumieć, co dokładnie masz na myśli, ale jestem pewien, że można to zrobić za pomocą funkcji JS, gdzie oblicza się szerokość kolumn i szerokość przeglądarki/ekranu i odpowiednio dostosowujesz DataGridView. Mógłbyś mieć kilka problemów z ustawieniem szerokości komórek "td", więc zmiana opcji na dostawców CSS i renderowanie jako div i span może być opcją.

+0

To nie jest aplikacja internetowa, tylko standardowy plik aplikacji Windows Forms. – Wesley

0

Może być kiepsko, ale po prostu przyklejaj dwa rzędy DGV obok siebie, wyłącz pionowy pasek przewijania po lewej stronie DGV, połącz każdy element DGV z ​​połową danych i kontroluj oba za pomocą prawego paska przewijania DGV.

Oprócz tego myślę, że będziesz potrzebować sporo kodowania, aby uzyskać pojedynczy DGV, aby zrobić to, co chcesz.

1

Zdaję sobie sprawę, że wysłałeś to pytanie w kwietniu, więc prawdopodobnie znalazłeś już rozwiązanie lub przeniosłeś się na coś innego. Jednak ja niedawno napisał kontroli, który robi w zasadzie tylko to, co można opisać, można pobrać go za darmo z BitBucket tutaj:

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

Screenshot of SplitDataGridView control

Jeśli jesteś zainteresowany, otrzymując A SplitDataGridView sterowania zastrzelony i daj mi znać, co myślisz.

Powiązane problemy