sobota, 14 lipca 2012

ASP Wiązanie danych cz. 2

W dzisiejszym poście przedstawię kontrolkę LinqDataSource oraz sposób jej implementacji w projekcie Web Site oraz Web Application.

LinqDataSource odwołuje się do bazy danych inaczej niż SqlDataSource. Nasza dzisiejsza kontrolka do pracy potrzebuje obiekt kontekstu. Zanim pokażę jak go utworzyć potrzebujemy znowu jakieś przykładowe dane. Tym razem nasze dane utworzymy sami:

Tworzymy nową aplikację Asp.NET Empty Web Application:


Następnie w Solution Explorerze klikamy prawym przyciskiem na nazwę projektu i wybieramy Add->Add ASP.NET Folder-> App_Data. Na poniższym screenie jest na szaro ponieważ już dodałem go do swojego projektu.

App_Data jest to jeden ze specjalnych folderów dla ASP.NET. W nim będzie przechowywana nasza baza danych, którą teraz utworzymy:
Klikamy w Solution Explorerze na App_Data prawym i dajemy kolejno Add->New Item...
Wybieramy SQL Server Database


Po dodaniu nowej bazy danych będzie ona widoczna w oknie Solution Explorera. Rozwijamy zatem drzewo naszej bazy i klikamy prawym na Tables i wybieramy Add New Table:


Po wybraniu tej opcji ukaże nam się projektant tabeli, gdzie możemy ustalić jej kolumny, typ przechowywanych danych i wiele innych rzeczy. Ja ustawiłem w swoim przypadku taką strukturę:


Pierwsza kolumna oznacza w moim przpadku identyfikator filmu i jest oznaczona jako klucz główny tabeli. Dzięki temu każdy wiersz będzie miał odmienną wartość MovieID, która zresztą będzie się zwiększała automatycznie (przekonamy się o tym przy wprowadzaniu danych).
Myślę że nie trzeba tłumaczyć jak wprowadzać dane do projektanta. Dopiszę tylko, że klucz główny ustawia się po kliknięciu prawym przyciskiem np na nazwie kolumny. Zapiszmy naszą tabelę.

Teraz kliknijmy prawym przyciskiem w Solution Explorerze na dopiero co utworzonej nowej tabeli i wybierzmy opcję Show Table Data. Uzupełnijmy ją jakimiś wartościami. Dla przykładu moje bezsensowne dane wyglądają tak: :)


Po zapisaniu zmian mamy już na czym eksperymentować. Teraz zajmiemy się utworzeniem obiektu kontekstu.
W projekcie Web Application tworzy się go inaczej niż w projekcie Web Site.
Musimy dodać do naszego rozwiązania nowy projekt class library. Klikamy w Solution Explorerze na nasze rozwiązanie (Solution) i dalej: prawy przycisk myszy -> Add -> New Project i wybieramy Class library.


W projekcie usuwamy automatycznie wygenerowany plik .cs i klikając na nowo dodanym projekcie prawym przyciskiem wybieramy Add->New item -> LINQ to SQL Classes


Do nowo utworzonego projektanta przeciągamy teraz naszą tabelę z Server Explorera i... tyle. Obiekt kontekstu został utworzony automatycznie.


Dodawanie kontrolki LinqDataSource

W projekcie naszej aplikacji (a nie w projekcie obiektu kontekstu) dodajmy nowy plik Web Form. Dodajmy także referencję do biblioteki z naszym obiektem kontekstu (pamiętając najpierw o skompilowaniu go).

Otwórzmy teraz nasz plik Web Form z rozszerzeniem .aspx. Z Toolboxa przeciągnijmy do niego LinqDataSource (znajdziemy tą kontrolkę pod zakładką Data w Toolboxie).


Przejdźmy na widok Design lub Split i z menu inteligentnych znaczników wybierzmy Configure Data Source

Jeśli wszystko wykonaliśmy do tej pory poprawnie to w oknie kreatora będziemy mieli widok podobny do tego:

Klikamy Next, w następnym oknie wybieramy naszą tabelę jeśli jeszcze nie została wybrana automatycznie i dajemy Finish. Znaczniki naszej kontrolki zostaną zmodyfikowane automatycznie. Dodatkowo uzyskamy możliwość zaznaczenia opcji ustawienia dodawania, zmiany i usuwania danych z poziomu strony.


Zaznaczmy wszystkie opcje.

Wyświetlanie danych na stronie

Mając wszystko ustawione spróbujmy wyświetlić dane z tabeli na stronie.
Przeciągnijmy na stronę GridView z Toolboxa.
Podpięcie naszego LinqDataSource do GridView jest banalnie proste. Wystarczy tylko w widoku split lub design włączyć menu inteligentnych znaczników i wybrać odpowiednia wartość Choose Data Source: (w moim przypadku LinqDataSource1).


Widzimy że wygląd kontrolki zmienił się. 
Zaznaczmy w naszym GridView podobnie jak w LinqDataSource dostępne checkboxy:


Trzy ostatnie checkboxy pojawią się tylko wtedy gdy zaznaczyliśmy je także wcześniej w LinqDataSource.

Zostało nam tylko uruchomić projekt (F5) i zobaczyć jak wszystko działa.
(Zamiast GridView możemy wybrać inną kontrolkę do prezentowania danych np DetailsView)

Zmiany dla projektu Web Site

W projekcie Web Site wszystko robimy niemal identycznie poza dodawaniem obiektu kontekstu.
Nie tworzymy nowego projektu Class Library i nie dodajemy referencji do naszego głównego projektu tak jak wcześniej. Zamiast tego wszystko odbywa się w jednym projekcie Website.
Musimy dodać do projektu jedynie jeden ze specjalnych folderów ASP.NET App_Code który jest dostępny jedynie dla projektu Web Site.


Do tego folderu dodajemy dopiero LINQ to SQL Classes i robimy wszystko dalej tak samo jak w projekcie Web Application.

Struktura projektu powinna wyglądać mniej więcej tak:


Brak komentarzy:

Prześlij komentarz