Drag and Drop (2) (przenoszenie obiektów między tabelami)

Publikowałem kiedyś tutorial na temat drag and drop, zebrałem się i postanowiłem rozwinąć ten wątek. Dzisiaj zajmę się bardziej przydatną wersją drag and drop mianowicie będziemy z jednej tabeli przenosić element do drugiej i będziemy mogli to zapisać. Jest to o tyle ciekawe i przydatne, że możemy użyć tego w pracy np przy przydzielaniu pracowników do projektu bądź przydzielaniu jakiegoś ekwipunku pracownikowi. Zaczynamy standardowo od zrobienia nowego projektu. Teraz dodamy lokalną bazę danych:

dad2_1

dad2_2

dad2_3

 

Przyciskamy next

dad2_20 dad2_4

Można swoją nową bazę danych jakoś nazwać albo zostawić bez zmian. Przyciskamy Finish i tym samym mamy utworzona lokalną bazę danych. teraz naszą bazę trzeba wypełnić tabelami. Aby to zrobić otwieramy „Data explorer” po lewej stronie i znajdujemy naszą bazę danych, rozwijamy ją przyciskamy prawym przyciskiem na folder „Tables” i wybieramy „create table” teraz program powinien przekierować nas na naszą nową tabele.

dad2_5

 

Wypełniamy ją tak jak poniżej:

dad2_6

 

Musimy pamiętać o tym aby utworzyć kolumnę id aby można było edytować nasze rekordy, musi ona mieć „Primary key” ustawiony na „yes” musi być typu liczbowego czyli „int” albo „bigint” i najlepiej jeśli zaznaczymy opcje „identity” na „true” będzie wtedy tworzyć się automatycznie a my nie będziemy musieli w nią ingerować. Teraz analogicznie tworzymy dodatkowe dwie tabele:

dad2_7

 

dad2_8

Zamysł jest taki, mamy tabelę wyposażenie gdzie powpisujemy jakieś wyposażenia pracowników np: młotek, wiertarka. Pracownikowi na początku zmiany przydzielane są te urządzenia i na koniec zmiany oni oddają te wyposażenie :] . Jeśli wszystko poszło dobrze nasz „data explorer” powinien wyglądać tak:

dad2_9

 

Teraz musimy stworzyć „data sources” dla naszych tabel. przechodzimy do „Data Sources” po lewej stronie:

dad2_10

 

i przyciskamy „Add new Data sources” zostanie przekierowani na edytor dodawania źródła danych:

dad2_11Database i next>

dad2_12

dad2_13 next

dad2_14 Wybieramy nasze tabele i wciskamy Finish.

dad2_15 Teraz nasze tabele są zamontowane do programu.

Trzeba teraz wszystko ładnie na formie poukładać, pododawać przyciski pousuwać zbędne rzeczy. Ja zmieniłem sposób wyświetlania się kolumny wartość tak aby dodawalo mi ” zł” i wyświetlało na środku:

dad2_16

 

Ostatecznie moja forma wygląda tak:

dad2_17

 

Jeśli ktoś nie wie jak co dodać zapraszam do lektury wcześniejszych postów. Musimy ustawić naszym DataGrid opcje „AllowDrop” na „true” aby umożliwić przenoszenie elementów, ja tym dwóm datagrid dla pracownika1 i pracownika2 ustawiłem dodatkowo „AllowUserToAddRow” na „false”. Najpierw zajmiemy się opcją przyciskową, naszym zadaniem jest aby po zaznaczeniu wiersza albo wielu wierszy po przyciśnięciu przycisku „>>>” wiersze te przeniosły się do innej tabeli. Jeśli programujemy bazę danych wygląda to trochę inaczej, tutaj idąc na łatwizne jeśli zakotwiczymy do formy bazę danych tabele liczone są odpowiednio:

dad2_19

 

Trzeba się tylko odwołać do naszej bazy danych czyli w tym wypadku „Database1” i tabeli.

Funkcja dla każdego wybranego wiersz będzie najpierw tworzyła nowy wiersz  w tabeli pracownik1, następnie będzie kopiowała wartości i wklejała je do nowego wiersza, i tutaj bardzo ważny szczegół, ponieważ nawet jeśli kolumny są niewidoczne i tak są widoczne dla funkcji. Dlatego moja funkcja for dla elementu „c” zaczyna się od „1” aby pominąć kolumnę „id” która ma numer 0, można by było też usunąc -1 dla ColumnCount. W moim zamyśle jest aby tabela sama przypisywała sobie id, problem mógłby się pojawić jeśli przenieśliśmy wiersz z jednej tabeli do drugiej i id byłby takie same, taka sytuacja nie może mieć miejsca i program wywali nam błąd. Następne elementy Dodają wartości do wierszy i usuwają wiersz z tabeli „wyposażenie”. Teraz powtarzamy nauke dla każdego przycisku:

U mnie to wyglądało tak. Odpalamy i sprawdzamy jak to działa. Powinno działać. Teraz dodamy możliwość „Drag and Drop” . Aby to zrobić musimy dodać „Event” do naszych datagrid, można skopjować ze strony albo poszukać w opcjach Datagrid. Należy w tym celu zaznaczyć interesujący nas „DataGrid” w prawym dolnym rogu pokaże się nam jego „Properties” Znajdujemy ikonkę z piorunem i przyciskamy ją teraz jesteśmy w „event’ach”  znajdujemy „DragEnter”  przyciskamy dwukrotnie i program sam utworzy suba i przeniesie nas do kodowania. tam wpisujemy:

Powtarzamy czynność i znajdujemy event „DragDrop” i wpisujemy to co wpisywaliśmy dla przycisku:

Teraz musimy tylko dodać dodatkowy event dla naszego „WyposażenieDatagrid” aby można było przenosić całe wiersze, nie chcemy przenosić przecież samych komórek. Znajdujemy znowu event tym razem „MouseDown” i wpisujemy:

Teraz możemy przenosić nasze wiersze. Dla przycisków „zapisz” wstawiłem opcje:

Dla przycisku Odśwież

Zapraszam do komentowania :] mam nadzieje, że komuś pomogłem. Zapraszam do przeczytania toturiali

Drag and Drop i Licznik też używane są tam podobne opcje jak w tym tutorialu więc może tam znajdziecie coś co wam pomoże.

Program do pobrania DragAndDrop2

Pozdrawiam i życzę przyjemnej lektury.

 

 

 

Permalink do tego artykułu: https://visualmonsters.cba.pl/drag-and-drop-2-przenoszenie-obiektow-miedzy-tabelami/

Dodaj komentarz

Twój adres email nie będzie publikowany.