C#, MSSQL, dokumenty z pozycjami


(Adam Kasprzak) #1

Witam!

Muszę napisać program, za pomocą którego w bazie SQL będę zapisywał dokumenty. Dokumenty te będą zawierały nagłówek i pozycje. o ile z zapisaniem nagłówka nie mam problemów (zwykłe textboxy) to z pozycjami już mam. Nie bardzo wiem jak to ugryźć. Najpierw chciałem rozwiązać to też za pomocą texboxów, ale nie wiem ile na takim dokumencie może być pozycji. Druga opcja to zastosowanie datagridview z opcją edycji po wpisani wszystkich pozycji dokumentu przekazać go do bazy. Problem w tym, że nie wiem jak to zrobić. jeśli ktoś ma jakieś inne pomysły na rozwiązanie tego lub namiary na materiały to bardzo proszę o podanie.

Pozdrawiam!

Adam


([alex]) #2

W Delphi używam VirtualTreeView dla list i drzewek, tak to wygłąda:

ekran10a.jpg&width=750&height=900&quality=80

To akurat praca kolegi ale związana z dokumentami.

Podobno dla C# tez jest implementacja VirtualTreeView.

Ale zawsze możesz pójść na łatwiznę: http://www.codeproject.com/KB/server-ma ... npain.aspx


(somekind) #3

Przychylałbym się właśnie ku takiemu rozwiązaniu.

Ale czego konkretnie nie wiesz? Jak korzystać z bazy? Poczytaj o ADO.NET.


(Adam Kasprzak) #4

konkretnie chodzi mi o to jak "przekazać" datagridview do bazy - każdy wiersz po wierszu


(Jam1234) #5

Masz obiekt DataTable (odpowiada on tabeli z bazy danych a patrząc od strony interfejsu odpowiada właśnie DataGridView). Napełniasz go z bazy jak chcesz. Najważniejsze jest utworzenie obiektu BindingSource. BindingSource wiążesz z DataTable (BindingSource.DataSource = twój DataTable). A potem DataGridView.DataSource = BindingSource. Oczywiście pozostaje obsłużyć zapis i odczyt danych.

Jest inna metoda (jeśli korzystasz z Visual Studio).

  1. Musisz podłączyć sobie bazę danych na której pracujesz przez Server Explorer (powinien być obok Toolboxa). New connection... Konfigurujesz.

  2. Dodajesz do projektu (new item) obiekt DataSet.

  3. Z Server Explorera przeciągasz tabele z bazy danych na ten DataSet.

  4. Kompilujesz.

  5. Teraz na formularzu dla DataGridView (pod małym przyciskiem przypominającym play) wybierasz ten obiekt DataSet (Choose data source). Musisz go znaleźć na drzewku.

No i w sumie tyle. Poza problemem podmieniania connection stringów z Twoich, developerskich na te, z których powinien korzystać gotowy program (pewnie konfigurowanych dynamicznie).

Ogólnie musisz pobawić się designerem i poeksperymentować.

Z drugiej strony. Możesz podpiąć swoje obiekty do grida. Jeden obiekt = jeden wiersz DataTable. Properties twojej klasy to kolumny wiersza DataTable. Załóżmy, że masz klasę PozycjaDokumentu, wtedy DataTable zastępujesz obiektem BindingList. Więcej kodowania, ale większa kontrola nad działaniem.

Polecam:

http://www.switchonthecode.com/tutorial ... a-database

http://www.switchonthecode.com/tutorial ... collection

P.S.: DataGridView jest niestety szkaradny... Zachęcam do zapoznania się z komponentami DevExpress. Niestety, licencja komercyjna to 700USD. Jeśli robisz projekt na zaliczenie i chcesz zrobić wrażenie, możesz pobrać wersję evaluation za darmo. Ich kontrolki (a w szczególności grid) naprawdę robią wrażenie... (REKLAMA - lol)


(somekind) #6

Na tej samej zasadzie szkaradne są wszystkie standardowe kontrolki. Nie przesadzaj - wygląd można sobie dość łatwo zmodyfikować. Natomiast DevExpressy to często (niestety) przerost formy nad treścią - dla prostych zastosowań mają zbyt wielką funkcjonalność, która początkującemu na pewno nie ułatwi pracy.