Tomasz M.

Tomasz M. never go full
retard!

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Cześć,

Spotkaliście się z jakąś ciekawą (w miarę darmową do zastosowań komercyjnych) formatką typu DataGrid? Miałaby ona posłużyć do zapisu szablonu księgowań dokumentu, także zwykłe wiersze i kolumny nie do końca wystarczają, chyba, że ktoś mi podrzuci jakieś przyjemne rozwiązanie na bazie 'stockowych' kontrolek.

Żeby zobrazować o co mi chodzi...

Obrazek


edit:
Kontrolka dla Windows App ;]Tomasz M. edytował(a) ten post dnia 26.05.09 o godzinie 23:40

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Jednym z moich ulubionych źródeł wartościowego oprogramowania jest jest http://codeproject.com

Publikowane tam kody są w większości do komercyjnego wykorzystania. System punktowej oceny rozwiązań i niemal natychmiastowa reakcja użytkowników w zakresie wykrywania bugów (i updejtowania kodu przez autorów) czyni z wortalu potężne narzędzie.

Oto używany często przeze mnie grid:
http://www.codeproject.com/KB/grid/csharpgridcontrol.aspx

Nie ukrywam, narobisz się przy nim trochę (dużo klas do przejrzenia i nauczenia się - ale są czytelne przykłady), próbując dopasować grid do własnych potrzeb, ale możliwości są niesamowite!
Model MVC w odniesieniu do pojedynczej komórki. Czasem trzeba wydziedziczyć z istniejących klas i dodać swoją funkcjonalność, czasem napisać jakiś "adapter".

Każda komórka ma swój widok (kolory, ramka, marginesy, wyrównanie), swoje "zachowanie" (reakcje na kliknięcie, klawisz), swój edytor.

Jest nieco wsparcia dla bindowania (ale pewnie i tak obsłużysz wszystko ręcznie, biorąc pod uwagę złożony "setup" komórek) i tryb VirtualMode.

Projekt posiada oczywiście dostępne źródła i bardzo przydatne demo, pokazujące jak uzyskać określoną funkcjonalność.

Szczerze polecam, chociaż nie znam do końca Twoich wymagań.

Poniżej "demko" możliwości. Z wykorzystaniem powyższej kontolki i biblioteki KryptonToolkit (renderowanie nagłówków kolumn i nagłówków grupujących).

Jest to panel wprowadzania wyników w pisanej przeze mnie aplikacji do obsługi laboratorium analitycznego. Jak widać, każda komórka może mieć swój edytor, formatowanie, słownik, walidator. Bindowanie z odpowiednio przygotowanym DataTable (tak, wszystko w płaskiej tabeli dla uproszczenia, nie jest to jakieś szczególne utrudnienie). Jak widać - kolumna [u]nie musi[/i] mieć jednego typu, np. same wartości numeryczne.

Najwięcej napracowałem się nad ustawianiem wysokości wiersza dla wielolinijkowych komunikatów (domyślny algorytm nie jest najlepszy) - ale może Ty nie będziesz musiał tworzyć takiej funkcjonalności :)

Komórki i wiersze możesz scalać (i dowolnie sterować obramowaniem komórki), dzięki czemu uzyskasz efekt podobny do tego, jaki naszkicowałeś (nie widać wszystkich komórek każdego wiersza, a tylko nieliczne). Można je także czynić nieaktywnymi ("omija" je kursor, nie przyjmują komunikatów).


Obrazek


EDIT:
W SourceGrid zmieniono architekturę, usunięto kilka bugów i ulepszono, ale niestety trzeba się jej uczyć na nowo... Ja chwilowo
pozostaję przy starej wersji, którą już dobrze znam :)Adrian Olszewski edytował(a) ten post dnia 11.06.10 o godzinie 13:41
Tomasz M.

Tomasz M. never go full
retard!

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Dziękuję za wyczerpującą odpowiedź! Faktycznie, wygląda to bardzo ciekawie - siadam do lektury :)
Przemysław Krygier

Przemysław Krygier Specjalista Systemów
Informatycznych

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Niestety nie darmowa, ale naprawdę świetna biblioteka http://devexpress.com/
Wojciech Gomoła

Wojciech Gomoła Now is my Time

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Adrian Olszewski:
Jednym z moich ulubionych źródeł wartościowego oprogramowania jest jest http://codeproject.com
...................................

Nie uważam żeby kontrolki z CodeProject były najlepszym rozwiązaniem, używam kilku z nich ale uważam że znaczna ich część jest napisana silnie strukturalnie a to rzutuje na całość projektu :-|.

Co do kontrolek z DevExpress'a osobiście nie przejechałem się jeszcze na nich (być może dlatego że ich dużo nie używałem) a wszyscy moi znajomi którzy ich używają wyrażają się o nich bardzo przychylnie.Wojciech Gomoła edytował(a) ten post dnia 31.05.09 o godzinie 19:38

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Cel uświęca środki, przynajmniej w informatyce.

CodeProject jest skarbnicą wiedzy, którą dzielą się między sobą programiści. Kod jest jedynie wyrazem pewnej myśli, idei. Ilu ludzi, tyle "wykonań".

Zatem: idea. Jeśli szukam na szybko czegoś, do rysowania barkodu, to interesuje mnie jedynie funkcja "DrawBarcode", nic więcej. Jeśli chcę automatycznie opublikować raport RDL na serwerze, to interesuje mnie składnia i działający przykład (a to często niewypowiedzianie więcej, niż suchy MSDN). Jeśli interesuje mnie, jak szybko wyszarzyć formatkę pod dialogiem, to jestem ciekaw, czy komuś działa to równie wolno, jak mnie, czy może szybciej - bo wymyślił lepsze podejście.

Które być może zaprogramował ...owo :) pod względem "inżynierskim".

Oczywiście statystycznie "niemożliwym" jest, by wszystkie były "słabe". Znam CP (prawie, ze na pamięć) od kilku dłuuugich lat, przekopałem je wzdłuż i wszerz, pod kątem rozwiązań dla różnych platform. Są tam kody, które może nie najlepiej zapisano, ale służą mi z powodzeniem od 2004 :)

Dla mnie, w danej chwili, daleko ważniejsze od "czystości kodu" jest, by uzyskać satysfakcjonujące mnie rozwiązanie problemu, punkt zaczepienia. Od tego bowiem zależeć będzie dalsze pokierowanie pracami analitycznymi, projektowymi i programistycznymi. A to, co znalazłem tam, daleko przebija (oczywiście IMHO) wszystkie inne znane mi portale "z kodem".

Kiedy to osiągnę, mogę iść dwiema drogami.

Pierwsza - mam DLLkę i dopóki działa, jak mi jest to potrzebne, jakość kodu w niej mnie nie interesuje. To dobre podejście, pod warunkiem, że DLLka przeszła testy jednostkowe i wydajnościowe.
Jeśli potrzebuję dodatkowej funkcjonalności, osiągam ją przez wzorce projektowe. Włączenie komponentu do projektu następuje na zasadzie czarnej skrzynki.

Druga droga wynika z potrzeby modyfikacji istniejącego kodu (bugi, gruntowna zmiana działania). Wtedy trzeba przegryźć się przez kod, zmodyfikować go. I wtedy - owszem - to, co napisałeś ma kluczowe znaczenie.

A w każdym razie tak kluczowe, jak dbałość o te szczegóły w danym projekcie, w danej firmie. Wiem z doświadczenia, że w największych korporacjach są grupy, gdzie obiektowość sprowadza się do... tworzenia obiektów. A są malutkie firmy, gdzie wdraża się pełne TDD... :) Jeśli zatem w projekcie przykłada się dużą wagę do jakości kodu, to masz rację. Ale nie znam projektu (ale może po prostu takiego nie widziałem), gdzie strata z powodu zbyt strukturalnie napisanego komponentu (dostępnego za darmo, rozwiązującego wiele problemów na daną chwilę) przewyższała zysk z jego znalezienia. Po prostu brało się DLL i dołączało. A komponenty z CP wykorzystywane były hurtowo.

No dobra, "stanowiły fundament" :)

Tak właśnie przegryzałem się przez wspomniany grid. Nie wiem, czy jest napisany bardzo źle - przywykłem do takiego, jaki jest, jestem zatem nieobiektywny :)

Wracając do tematu - CP to kopalnia pomysłów i wykonania. Są wykonania lepsze i gorsze. Jeśli wykonanie jest ocenione wysoko, raczej nie przejmuję się jakimiś tam niedociągnięciami i staram bardzo stronić od "puryzmu technologicznego". Po prostu zapoznaję się z kodem, przeglądam listę komentarzy (tam często są opisy bugów i łaty), testuję, kompiluję, wdrażam - i zapominam na wieki wieków.

Czasem, z kolei, rozwiązanie jest ocenione kiepsko - a mnie dokładnie o to chodzi i to wystarcza. Przecież nic nie stoi na przeszkodzie, by przepisać kod bardziej obiektowo, jeśli ktoś uważa, że zachodzi taka potrzeba.

Tak się ładnie rozgadałem, ale to dlatego, by jednak nie straszyć potencjalnych użytkowników CP przed tym portalem, bo często znaleźć tam można wyjątkowe perełki, w dodatku aktywnie testowane przez wielu koderów.

A oczywiście przychodzi kiedyś moment, gdy "główny techniczny projektu" stawia sobie pytanie: czy nie czas przejść na coś płatnego, ze wsparciem technicznym?

Często tak. Ale nie zawsze.

Pozdrowienia z Sosnowca :)

PS: jeden z moich kolegów wiesza psy na Krypton Toolkit, a ja go bardzo lubię :) Ilu ludzi, tyle podejść...Adrian Olszewski edytował(a) ten post dnia 31.05.09 o godzinie 20:36
Przemysław Krygier

Przemysław Krygier Specjalista Systemów
Informatycznych

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Adrian popieram Cię w całej rozciągłości ... zawsze !!! trzeba się rozejrzeć czy ktoś wcześniej nie rozwiązał czegoś, zanim zanim się za to sami zabierzemy. Generalnie rzut oka na przykłady stosowania kodu i dokumentację pozwala zorientować się (najczęściej odrzucić) kiepskie rozwiązania. Generalnie z dobrym kodem jest tak że nie trzeba go wyjaśniać. Metody nazywają się sensownie. Całość pakietów, interfejsów jest intuicyjna ... a CodeProject to prawdziwa kopalnia.

Pozdrawiam

Przemek

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Może nie Grid, tylko List, ale naprawdę przyjemna kontrolka :)
http://www.codeproject.com/KB/list/ObjectListView.aspx (4.85 / 5)

Wszelkich gridów i list nigdy dość, więc doklejajcie, doklejajcie!

konto usunięte

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Ja kupiłem teleriki http://telerik.com i polecam -> można zaoszczędzić czas i pieniądze do tego masz palete od winformsów po wpf.
Szymon I.

Szymon I. SAP Foundation Team
Leader

Temat: DataGridy - jakaś alternatywa dla standardowego DataGridView

Godny polecenia, choć nie tani jest pakiet od Infragistics. http://www.infragistics.com)

Następna dyskusja:

Alternatywa dla C#




Wyślij zaproszenie do