You are on page 1of 26

B2 d.o.o.

VIJA STROKOVNA OLA

SEMINARSKA NALOGA Spletna aplikacija v ASP.NET

Ljubljana, Marec 2013

Ivan Vedic Ai

KAZALO VSEBINE
Kazalo vsebine se posodobi tako, da se postavimo na kazalo in ga posodobimo s pomojo tipke F9. Tudi vsa nadaljnja kazala (kazalo slik, tabel, grafikonov) posodabljamo na enak nain.

1 2

Uvod ................................................................................................................................... 1 Nart projekta ..................................................................................................................... 2 2.1 Podatkovni model/shema............................................................................................. 3

Izdelava spletne aplikacije ................................................................................................. 5 3.1 3.2 Visual studio template ................................................................................................. 5 ASP.NET konfiguracija ............................................................................................... 5 Storitve ................................................................................................................. 6 Uporabniki, Skupine............................................................................................. 7 Zaita .................................................................................................................. 8

3.2.1 3.2.2 3.2.3 3.3 3.4 3.5

Podatkovna baza .......................................................................................................... 8 Nart strani in Navigacija ............................................................................................ 9 Master page................................................................................................................ 11 Style sheet .......................................................................................................... 11

3.5.1 3.6

Administrativne strani ............................................................................................... 12 Account/Login.aspx ........................................................................................... 12 Admin/TipiKomponent.aspx .............................................................................. 13 Admin/Dobavitelji .............................................................................................. 15 Admin/Komponente ........................................................................................... 16

3.6.1 3.6.2 3.6.3 3.6.4 3.7

Strani uporabnika ....................................................................................................... 18 Konfiguracije.aspx ............................................................................................. 18 UrediKonfiguracijo.aspx .................................................................................... 19

3.7.1 3.7.2 3.8

Ostalo ......................................................................................................................... 20 NiZaloge.aspx .................................................................................................... 20 Napaka.aspx ....................................................................................................... 20

3.8.1 3.8.2 4 5

Literatura in viri ............................................................................................................... 21 Priloge .............................................................................................................................. 22

UVOD

Cilj seminarske naloge je nazorno opisati izdelavo spletne (web) aplikacije v ASP.NET tehnologiji s pomojo razvojnega orodja Microsoft Visual Studio 2010. Spletna aplikacija bo namenjena prodajalcu raunalnike opreme za enostavno sestavljane konfiguracij raunalnikov. Aplikacija bo uporabnikom, prodajalcem, omogoala enostavno vodenje zalog razlinih raunalnikih komponent, sestavljanje raunalnikih konfiguracij iz komponent ter prodajo tako sestavljenih raunalnikov.

NART PROJEKTA

Izdelali bomo spletno aplikacijo za sestavljanje raunalnikih konfiguracij za podjetje, ki se ukvarja s prodajo raunalnikov. Aplikacija bo izdelana s pomojo ASP.NET tehnologije v C# jeziku in bo postavljena na lokalnem IIS streniku. Aplikacija bo uporabljala SQL Express podatkovno bazo. Namen aplikacije je zaposlenim v podjetju, ki se ukvarja s prodajo raunalnikov, omogoiti: 1. 2. 3. 4. Enostavno vodenje podatkov o dobaviteljih raunalnikih komponent Vodenje evidence in zaloge razlinih raunalnikih komponent Sestavljanje raunalnikih konfiguracij in Prodajo tako sestavljenih raunalnikov.

Aplikacijo bosta uporabljali dve skupini uporabnikov: 1. Administratorji, ki bodo skrbeli za vodenje podatkov o dobaviteljih in komponentah, ter 2. Prodajalci, ki bodo lahko sestavljali raunalnike konfiguracije iz zaloge komponent ter evidentirali raune. Aplikacija bo imela enoten design preko vseh strani ter kontrolo dostopa glede na uporabnike pravice. Administrativne strani aplikacije bodo skrite navadnim uporabnikom. Za uporavno funkcionalnosti aplikacije se bo potrebno prijaviti z uporabnikim imenom in geslom. Uporabnika imena in gesla bo dodeljeval administrator oziroma manager podjetja osebno. e uporabnik ni prijavljen, ni dostopna nobena stran, razen strani za prijavo. Raunalnika konfiguracija je seznam komponent in tevila komponent za sestavo raunalnika, ki ima svoje kratko ime ter nek namen raunalnika izraen v opisu konfiguracije. Prodajalci bodo lahko glede na dobavljive komponente sestavljali razline konfigu racije raunalnikov za razline namene ali cenovne razrede. Imeli bodo vpogled v katalog komponent in njihove cene, aplikacija pa jim bo tudi omogoala izraun cene celega raunalnika ter evidentiranje prodaje. Aplikacija bo v primeru, da doloene konfiguracije ni mogoe sestaviti zaradi pomankanja zalog, izpisala seznam manjkajoih komponent. Naloga administratorja oziroma managerja v podjetju pa je, da ureja katalog raunalnikih komponent in vodi evidenco o dobaviteljih ter zalogi. Njegova naloga je tudi, da aurira podatke o novih komponentah ter jih vpisuje v bazo. S pregledom nad zalogo lahko tudi opravlja naroila komponent od dobavitelja, ki je naveden za vsako komponento. Raunalnike komponente se loujejo v skupine po tipu komponente. Vsaka komponenta ima sovjo ceno in dobavitelja. Kako bo administrator grupiral komponente je isto njegova prosta odloitev, ampak tu gre tipino za delitve na napreimer: ohija, osnovne ploe, procesorji in drugo. Trgovina lahko tako doda nov tip opreme, naprimer tiskalniki.

Do urejanja dobaviteljev, tipov komponent ter kataloga komponent imajo dostop samo administratorji strani. Skupina prodajalcev ima dostop le do urejevalnika samih konfiguracij ter do funkcije prodaj, ki evidentira prodajo doloenega raunalnika kupcu. tevilka rauna je kar ID v tabeli Prodaja. 2.1 PODATKOVNI MODEL/SHEMA

Najprej definiramo podatkovni model aplikacije glede na potrebe aplikacije. Hranili bomo osnovne podatke o podjetjih dobaviteljih, kot tudi enostavno evidenco prodaje. V bazi bomo imeli katalog komponent, ki bodo loene v skupine glede na ifrant tip komponente. Definirane bodo razline raunalnike konfiguracije, ki bodo imele vsaka svoj seznam komponent in tevila komponent, ki jo sestavljajo. Za vsako komponento vodimo ceno ter zalogo. Shema podatkovnega modela, baza:

Dobavitelji Tabela s podatki o dobaviteljih raunalnikih komponent, ki vsebuje: o Ime oziroma naziv firme o Davno tevilko o Telefonsko tevilko in o Email naslov. TipKomponente Tabela ifrantov za razline tipe raunalnikih komponent, kot so naprimer: matine ploe, procesorju, pomnilnik, itd. Tabela vsebuje: o Naziv tipa ter o Ime datoteke z reprezentativno ikono tipa komponente. Komponente Tabela opisov in zalog vseh razlinih raunalnikih komponent v prodaji, ki vsebuje: o Naziv komponente o Dalji opis komponente, ki je lahko tudi v HTML formatu o Ceno komponente o Koliino zaloge te komponente o ID dobavitelja komponente s podatki v tabeli Dobavitelji in e o ID tipa komponente v tabeli TipKomponente

Konfiguracije Tabela razlinih konfiguracij raunalnikov. Posamezne komponente konfiguracije se vpisujejo v povezano tabelo KomponenteKonfiguracije. V tabeli Konfiguracije se hrani le: o Kratek Naziv konfiguracije ter o Dalji opis raunalnika/konfiguracije o Polje zbrisano, ki pove ali je konfiguracija e aktualna za prodajo KomponenteKonfiguracije Tabela seznama posameznik komponent za doloeno konfiguracijo. Vsebuje: o ID konfiguracije o ID komponente o Koliino komponente v konfiguraciji. Prodaja Tabela evidenc prodaj doloene raunalnike konfiguracije. Vsebuje le: o ID konfiguracije o Datum in as prodaje oziroma rauna.

To shemo bomo uporabili za izdelavo podatkovne baze v SQL Express.

IZDELAVA SPLETNE APLIKACIJE

Za razvoj bomo uporabili Microsoft Visual Studio 2010 in izdelali ASP.NET Web Application projekt. Ker se bomo razvoja lotili po ve-ali-manj ad-hoc metodologiji, je pravzaprav dovolj, da imamo definirane potrebne funkcionalnosti aplikacije ter doloen podatkovnega modela.

3.1

VISUAL STUDIO TEMPLATE

Zaenemo Visual Studio 2010 ter odpremo nov projekt tipa Visual C#, Web, ASP.NET Web Application znotraj reitve (Solution) z imenom Rpa.Seminarska. Imenovali ga bomo Rpa.Seminarska.Web.

Visual Studio bo kreiral glavne datoteke za spletno aplikacijo, ki tee na IIS. Templat e nam e izdela osnovno konfiguracijo, master page, privzeto stran ter strani za prijavo uporabnika z uporabnikim imenom in geslom preko spletne forme.

3.2

ASP.NET KONFIGURACIJA

Za laji razvoj nastavimo Web konfiguracijo projekta tako, da nao ASP.NET aplikacijo zaene kar na lokalnem IIS streniku namesto na lokalnem Visual Studio streniku. To nas rei dodatnih komplikacij z venomer razlinim portom, na katerem se ta server oglaa.

Nato najprej iz menija Project zaenemo ASP.NET Configuration s katerim bomo dopolnili konfiguracijo nae aplikacije ter kreirali administrativno bazo aplikacije (uporabniki, skupine, etc...). Visual Studio zaene svoj zaasni spletni strenik ter odpre brskalnik na straneh orodja za administracijo za aktivni spletni projekt.

S tem orodjem bomo nastavili zaito aplikacije, uporabnike skupine in uporabnike.

3.2.1 Storitve

Najprej nastavimo nastavitev Provider. Tu nastavimo, da se nastavitve hranijo v lokalni SQL Express bazi. Nastala bo datoteka ASPNETDB.MDF v App_Data direktoriju spletnega projekta. 3.2.2 Uporabniki, Skupine Ker bosta aplikacijo uporabljali dve, po privilegijih loeni skupini uporabnikov, omogoimo uporabnike skupine na Security zavihku orodja za konfiguracijo.

Ustvarili smo dve uporabniki skupini: 1. Admin administratorji oziroma managerji v podjetju 2. User prodajalci

Administratorji sistema osebno dodajajo uporabnike. Ustvarjena sta dva uporabnika rauna: 1. Admin uporabnik v skupini Admin. Dostop do administrativnih funkcij aplikacije. 2. Vedic navaden uporabnik v skupini Users. Nima dostopa do administrativnih funkcij.

3.2.3 Zaita Enostavna konfiguracije naina na katerega se bodo uporabniki avtenticirali. Nastavitev From the internet nastavi prijavo v aplikacijo preko spletne forme z uporabnikim i menom in geslom.

3.3

PODATKOVNA BAZA

Sedaj imamo spletno aplikacijo nared za specifien razvoj. V aplikacijo se je e mogoe prijaviti preko avtomatsko zgeneriranih strani. Ker smo shemo e predasno natanno doloili, lahko najprej v projekt dodamo podatkovno bazo za podatke aplikacije. V Visual Studiu dodamo novo (New Item) SQL Server Database v App_Data direktorij projekta. Datoteko podatkovne baze bomo imenovali App.mdf. Preko Server explorer okenca v Visual Studiju lahko sedaj v bazi App.mdf ustvarimo vse potrebne tabele za aplikajo. Uporabimo jasno shemo podatkovnega modela. V aplikaciji bomo uporabili LINQ zmogljivosti za dostop do podatkov v bazi, tako da projektu dodamo e LINQ povezave na App.mdf v predlogi (file template) Data/LINQ to SQL Classes. Izdelava App.dbml datoteke je skrajno preprosta. Vse kar je potrebno zares narediti je dodati vse tabele iz App.mdf podatkovne baze v eni drag/drop potezi iz Server explorerja. Visual Studio e sam pravilno povee tabele med seboj z relacijami in zgenerira kodo potrebno za uporabo LINQ-a za dostop do podatkov. Ostane zares samo e, da v grafinem editorju popravimo avtomatsko zgenerirana imena spremenljivk in razredov. Tak Objektno-Relacijski mapping nam bo omogoil veliko laji razvoj v primerjavi z ostalimi metodami dostopa do podatkov, saj nam omogoa zelo enostavno spreminjanje podatkovnih potreb v aplikaciji.

LINQ razrede bomo v aplikaciji uporabili za ponazoritev podatkovnih entitet. Vsak razred se preslika 1:1 glede na shemo tabel v bazi. Razredi imajo tudi povezave na relacijsko povezane tabele. Tako ima naprimer objekt Dobavitelj preko lastnosti Komponente dostop do kolekcije vseh komponent s tem dobaviteljem. Pisanje in spreminjanje poizvedb ter oblike rezultatov tako postane veliko laje, ker lahko kompleksne zdruitvene poizvedbe enostavno izrazimo v C# notaciji z objekti. 3.4 NART STRANI IN NAVIGACIJA

Glede na funkcionalne potrebe aplikacije doloimo shemo razlinih spletnih strani ter kreiramo Web.sitemap datoteko s katero pripravimo navigacijski meni za aplikacijo. Navigacijski meni bo zgledal tako: Mainca osnovna privzeta prva stran o Konfiguracije stran za vpogled in delo s konfiguracijami o Nova Konfiguracija stran za kreiranje konfiguracije o Administracija podmeni samo za administratorje strani Tipi Komponent administracija ifranta TipKomponente Dobavitelji administracija dobaviteljev Komponente administracija kataloga komponent

Predvideno strukturo opiemo v Web.sitemap formatu:


<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"> <siteMapNode url="Default.aspx" title="Mainca" description="Zaetna stran"> <siteMapNode url="Konfiguracije.aspx" title="Konfiguracije" description=""/> <siteMapNode url="UrediKonfiguracijo.aspx" title="Nova konfiguracija" description="" /> <siteMapNode url="Admin/Administracija.aspx" title="Administracija" description=""> <siteMapNode url="Admin/TipiKomponent.aspx" title="Tipi Komponent" description="" /> <siteMapNode url="Admin/Dobavitelji.aspx" title="Dobavitelji" description="" /> <siteMapNode url="Admin/Komponente.aspx" title="Komponente" description="" /> </siteMapNode> </siteMapNode> </siteMap>

Predvidene strani dodamo v projekt. Pri dodajanju spletnih strani pazimo, da ustvarimo po predlogi z Master Page stranjo. Same vsebine strani bomo dodajali korakoma kasneje. Strani in strukturo dorektorijem naredimo zato, da nam bo delala navigacija v aplikaciji ter da lahko nastavimo nastavitve zaite dostopa glede na uporabniko skupino. Direktoriju Admin je potrebno nastaviti posebne nastavitve, saj elimo, da strani iz tega naslova dostopajo samo uporabniki Admin skupine.

Nastavitve zaite dodamo v Admin/web.config datoteko in sicer: Omogoimo dostop za Admin skupino Onemogoimo dostop za vse ostale uporabnike

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <authorization> <allow roles="Admin" /> <deny users="*" /> </authorization> </system.web> </configuration>

Admin/Web.config Da bo navigacijski meni prikazal navigacijo na administrativne strani samo uporabnikom Admin skupine, bomo za sitemap doloili t.i. security trimming. Nastavitev dodamo v Web.config datoteko strani, kjer napiemo celo novo sekcijo v konfiguracijo:
<siteMap defaultProvider="mysite" enabled="true"> <providers> <clear/> <add name="mysite" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true"/> </providers> </siteMap>

Ta securityTrimmingEnabled nastavi sitemap tako, da filtrira meni glede na dostopne pravice prijavljenega uporabnika. Navadni uporabniki tako v meniju ne bodo imeli povezav na administrativne strani v Admin direktoriju.

3.5

MASTER PAGE

Izdelamo t.i. Master page, ki daje skupno obliko in vsebino vsem stranem v aplikaciji. Predizdelanega e dobimo, ko ustvarimo ASP.NET Web Application projekt, z imenom Site.Master. Vendar bomo to vsebino zbrisali in oblikovali svojo.

Stran aplikacije bo venomen imela: predel Header ki bo zgornji pas ez celotno irino strani. Tu bo ime aplikacije ter t.i. SiteMapPath, ki prikae navigacijo po podstraneh. predel Levo ki bo vertikalni pas fiksne irine na levi strani strani poleg glavne vsebine strani. Vsebuje prikaz trenutnega uporabnika aplikacije navigacijski meni v obliki drevesa. predel Content ki bo vseboval specifino vsebino strani aplikacije. Vsebuje samo en ContentPlaceHolder asp.net gradnik za glavno vsebino podstrani z IDjem MainContent. predel Footer horizontalni pas na dnu strani z nekaj dekorativne vsebine.

Vsebina master strani je celoten HTML dokument. Posamezne strani pa potem ne vsebujejo ve glave in repa HTML dokumenta, vendar samo neposredno vsebino forme.

3.5.1 Style sheet Grafino podobo strani bomo v celoti implementirali s CSS v datoteki Styles/green-alt.css datoteki. Poleg barv in slogov pisave, v CSS datoteki na zaetku doloimo tudi razpored predelov na strani in tako doseemo centralni spreminjajoi se del ter vedno prisoten meni na levi ter navigacija na vrhu strani.

3.6

ADMINISTRATIVNE STRANI

Ker je podatkovna baza isto prazna bomo strani razvijali nekako od spodaj navzgor, zaevi z administrativnimi funkcionalnostmi. Prinemo z urejanjem ifranta tipov komponent ter dobaviteljev, ki nekako stojita nepovezano v modelu, nato pa e urejanje kataloga komponent. Ko so ti podatki na voljo, pa dodamo e stran za urejanje kataloga komponent. Za vstopno stran administratorja naredimo stran Admin/Administracija.aspx, ki vsebuje tevce vpisanih podatkov ter povezave na strani za njihovo urejanje. Predelamo pa tudi Account/Login.aspx stran, ki jo je ustvaril Visual Studio iz predloge spletnega projekta. 3.6.1 Account/Login.aspx

Avtomatsko zgenerirano stran je potrebno prevesti. Vsebuje asp:Login kontrolo, ki je e primerno pripravljena na uporabo.

3.6.2 Admin/TipiKomponent.aspx

Izdelamo stran za urejanje ifranta TipKomponente. Na strani bo administrator lahko dodajal, urejal in brisal zapise v tabeli TipKomponente. Prikazana bo tudi tabela vseh zapisov, ki jo lahko sortiramo ter ima omogoeno ostranjevanje. Na stran TipiKomponent.aspx dodamo sledee gradnike: <asp:DetailsView ID=TipiKomponentDetailsView> <asp:ValidationSummary> <asp:GridView ID=TipiKomponentGridView>

TipiKomponentDetailsView je uporabljen za formo pri vpisu novega tipa komponente. V editorju iz konfiguracijskega menija izberemo kreiranje novega Data Source-a.

Kreiramo LINQ Data Source z imenom TipiKomponentDataSource, ki izbere vse zapise iz tabele TipKomponent in omogoa avtomatino brisanje, spreminjanje in dodajanje zapisov.

TipiKomponentDetailsView razbere vsa polja iz tabele in zgenerira privzeto konfiguracujo. Komponenti e doloimo omogoeno dodajanje novih zapisov, nato pa uredimo konfiguracijo polj: Polji Naziv in Ikona spremenimo v TemplateField polja v dialogu konfiguracije polj. Editor nam zgenerira osnovni markup. Vsa polja, razen ukaznega z ukazom Dodaj za dodajanje novega zapisa, so skrita. Prikaejo se ob prehodu v urejevalni nain pri vnosu novega zapisa.

Izdelamo <InsertItemTemplate> za polje Naziv. V teh templatih implementiramo validacijo vnosa z razlinimi FieldValidator komponentami. Enako bo veljalo za polja GridView kontrol, kjer bomo izdelali svoje <EditItemTemplate>. Template za polje Naziv vsebuje TextBox vezan na Naziv polje tabele ter na njem dva FieldValidatorja: RequiredFieldValidator vnosno polje je obvezno, ne sme biti prazno CustomFieldValidator ki poene metodo NazivTipaNeObstaja na serverju. Ta v bazi preveri ali tip s takim imenom e obstaja. Ne dopuamo podvojenih vnosov.

Template za polje Ikona vsebuje FileUpload kontrolo vezano na Ikona polje tabele ter na njej RequiredFieldValidator, ker je izbira ikone pri novem vnosu obvezna. Na ItemInserting event kontrole pripnemo metodo, ki shrani poslano datoteko ikone v Images direktorij strani ter shrani pravilno ime datoteke v bazo. Na ItemCommand event za New ukaz, se prikaeta polji Naziv in Ikona. Na ModeChanged event pa polji Naziv in Ikona skrijemo, ko kontrola izstopi iz Insert naina. Tako deluje kontrola, e jo elimo uporabiti samo za vnos novih zapisov, ne pa tudi za pregled in urejanje obstojeih zapisov, kjer so polja vedno prikazana. Za TipiKomponentDetailsView postavimo ValidationSummary kontrolo, ki izpie sporoila pri vnosu zavrnjenem pri validaciji polj. TipiKomponentGridView prikazuje vse zapise iz tabele TipKomponente. V konfiguraciji v editorju izberemo isti TipiKomponentDataSource kot za TipiKomponentDetailsView. V konfiguraciji omogoimo Paging, Sorting, Editing in Deleting. Polji Naziv in Ikona prav tako spremenimo v TemplateField v katerem bomo izdelali <EditItemTemplate>. Template za polje Naziv TipiKomponentDetailsView. prekopiramo iz InsertItemTemplate polja v

Template za polje Ikona pa vsebuje samo FileUpload kontrolo brez validacije, saj dopuamo tudi prazen vnos, ko ne elimo spremeniti ikone zapisu pri urejanju naziva. TipiKomponentGridView osveimo na ItemInserted event v TipiKomponentDetailsView, ko je dodan nov zapis v bazo. Na RowUpdating event pripnemo metodo, ki opravi sprejemanje in shranjevanje poslane datoteke v Images direktorij strani. e datoteke ni, potem ne spreminjamo polja Ikona v zapisu.

3.6.3 Admin/Dobavitelji

Izdelamo stran za urejanje dobaviteljev. Na strani bo administrator lahko dodajal, urejal in brisal zapise v tabeli TipKomponente. Prikazana bo tudi tabela vseh zapisov, ki jo lahko sortiramo ter ima omogoeno ostranjevanje. Stran Dobavitelji.aspx je sestavljena podobno kot stran TipiKomponent.aspx s tremi komponentami/gradniki: <asp:DetailsView ID=DobaviteljiDetailsView> <asp:ValidationSummary> <asp:GridView ID=DobaviteljiGridView>

Izdelamo enako, kot za tipke komponent, le da za tabelo DobaviteljiDataSource-a izberemo tabelo Dobavitelji. Validacijo implementiramo enako: Polje Firma obvezno polje. CustomValidator z metodo FirmaNeObstaja. Polje DavcnaStevilka obvezno polje. Imamo e dve validaciji. Prva na strani klienta z RegularExpressionFieldValidatorjem, ki preverja dolino vnosa, ki mora biti 8 tevk. Druga na strani serverja, ki izrauna pravilnost davne tevilke po formuli za kontrolno tevilko davnne tevilke v metodi PreveriDavnotevilko. Polje Telefon neobvezno polje, vendar e je vpisano imamo RegularExpressionFieldValidator na strani klienta, ki preveri format vpisane telefonske tevilke. Dopuamo regionalne ali mednarodne telefonske tevilke. Polje Email neobvezno polje, vendar e je vpisano imamo RegularExpressionValidator na strani klienta, ki preveri pravilnost email naslova.

EditItemTemplate za polja v DobaviteljiGridView so enaki kot InsertItemTemplate za polja v DobaviteljiDetailsView z enakim sistemom za dodajanje novih zapisov in editiranje obstojeih.

3.6.4 Admin/Komponente

Stran kataloga komponent sestavimo enako kot TipiKomponent.aspx ali Dobavitelji.aspx, le da ima stran tri Data Source-a: KomponenteDataSource izbira vseh zapisov iz tabele Komponente z omogoenim avtomatskim dodajanjem, urejanjem in brisanjem. TipiDataSource izbira vseh zapisov iz tabele TipKomponente DobaviteljiDataSource izbira vseh zapisov iz tabele Dobavitelji

TipiDataSource in DobaviteljiDataSource se uporabijo za podatke v DropDownList kontrolah. V KomponenteDetailsView izdelamo polja za tabelo Komponente: Naziv TextBox vezan na polje Naziv. Obvezno polje. Opis vevrstini TextBox vezan na polje Opis. Neobvezno polje brez validacije. Cena TextBox vezan na polje Cena s posebnim formatom za valuto. Obvezno polje. Dodaten RangeValidator za vrednost vejo od 0. Zaloga TextBox vezan na polje Zaloga. Obvezno polje in dodaten RangeValidator za vrednosti med 0 in 9999.

Dobavitelj DropDownList kontrola s TipiDataSource podatki. Izbira iz seznama je obvezna. e vrednost ni izbrana je prikazana nita izbira iz predloge. TipKomponente DropDownList kontrola s DobaviteljiDataSource podatki. Izbira iz seznama je obvezna.

Pred KomponenteGridView dodamo e eno DropDownList vnosno polje z imenom listTipFilter za filtriranje zapisov prikazanih v KomponenteGridView glede na Tip Komponente. DropDownList podatke veemo na TipDataSource. V konfiguraciji KomponenteDataSource ustvarimo Where pogoj za filtriranje po polju TipKomponente ali pa po parametru strani Id, ki predstavlja Id komponente. Za to v dialogu ustvarimo dva parametra:

TipKomponente vezan na izbrano vrednost v listTipFilter. Id vezan na URL query parameter Id. Page_Load metoda avtomatsko preklopi KomponenteGridView v nain za urejanje, e je posredovan Id preko parametra. V tem primeru je v gridu samo en zapis. e v gridu ni zapisov, se KomponenteDetailsView avtomatsko preklopi v nain za dodajanje novega zapisa.

3.7

STRANI UPORABNIKA

3.7.1 Konfiguracije.aspx

Izdelamo stran Konfiguracije.aspx, ki jo prodajalci uporabljajo za pregled in iskanje konfiguracij ter evidentiranje prodaj. Stran vsebuje: <asp:TextBox ID=txtSearch> vpisno polje za iskalni niz po poljih Naziv in/ali Opis v tabeli Konfiguracija. <asp:Button ID=cmdSearch> gumb Ii <asp:GridView ID=KonfiguracijeGridView> - tabela konfiguracij, ki ima omogoeno ostranjevanje ter sortiranje. Link na stran za dodajanje in urejanje nove konfiguracije. <asp:GridView ID=ProdajaGridView> - tabela evidentiranih raunov iz tabele Prodaja.

Za ProdajaGridView ustvarimo ProdajaLinq data source v konfiguraciji v designerju. Polje Konfiguracija spremenimo v TemplateField, ter ga oblikujemo kot povezavo na urejanje konfiguracije, stran UrediKonfiguracijo.aspx. Pri KonfiguracijeGridView podatke posredujemo v kodi z uporabo LINQ jezika. Tukaj se dobro pokae fleksibilnost uporabe LINQ-a kot datasource v asp.net komponentah. Poizvedbe se generirajo avtomatsko glede na podatke, ki jih uporabimo v bindingih, ne da bi nam pri tem bilo potrebno vedno spreminjati osnovno poizvedbo.

V Page_Load naloimo vse podatke v KonfiguracijeGridView. Na klik gumba ii, pa izdelamo metodo CmdSearchClick, ki naloi podatke filtrirane glede na iskani niz iz vnosnega polja txtSearch. Izdelamo e metodo za ukaz Prodaj na doloeni vrstici KonfiguracijeGridView. Ta najprej preverimo, ali je mogoe sestaviti raunalnik glede na zaloge komponent. e kakna komponenta manjka, preusmerimo na stran NiZaloge.aspx, ki prikae seznam manjkajoih komponent konfiguracije. e je prodaja mogoa, pomanjamo zaloge uporabljenih komponent in evidentiramo raun v tabelo Prodaja.

3.7.2 UrediKonfiguracijo.aspx

Izdelamo stran UrediKonfiguracijo.aspx, ki deluje podobno kot administrativne strani za urejanje dobaviteljev ali komponent. Na strani prikaemo: <asp:DetailsView ID=KonfiguracijaDetailsView> - za prikaz zapisa v tabeli Konfiguracija in urejanje zapisa. <asp:GridView ID=KomponenteKonfiguracije> - seznam komponent v konfiguraciji, ki so vezane na konfiguracijo preko tabele KomponenteKonfiguracije. <asp:DropDownList ID=listTipFilter> - seznam tipov komponent, ki ga uporabimo kot filter KomponenteGridView-a. <asp:GridView ID=KomponenteGridView> - tabela kataloga komponent z omogoenim ostranjevanjem, sortiranjem in filtriranjem preko listTipFilter kontrole.

3.8

OSTALO

3.8.1 NiZaloge.aspx

Izdelava strani NiZaloge.aspx, ki se prikae, ko aplikacija ne more izvesti akcije prodaje. Na stran dodamo eno <asp:GridView> komponento, ki ji v designerju nastavimo LinqDataSource. Ta source skonfiguriramo na KomponenteKonfiguracije tabelo ter mu nastavimo Where stavek, ki izbere glede na Id konfiguracije v query parametru strani. Where stavek tudi izbere samo zapise, kjer zaloga komponente ni zadovoljiva. Izdelamo e TemplateField template za polji Komponenta in Dobavitelj, da izpieta vse potrebne podatke. Tudi tukaj se pokae fleksibilnost LinqDataSource-a, kjer lahko v templatih uporabimo podatke iz razlinih tabel ne da bi nam bilo potrebno rono spreminjati poizvedbo. 3.8.2 Napaka.aspx Izdelamo e enostavno stran, ki se prikae, e na streniku pride do napake. Prikaza te strani ne priakujemo kaj preve.

LITERATURA IN VIRI
Urani, Sreo. (2010). Microsoft Visual Developer in ASP.NET. [URL: http://moodle.sc-celje.si/inf/file.php/4/Uranic_ASP.NET.pdf] Official Microsoft Site. Building 3.5 Applications. [URL: http://www.asp.net/web-forms/videos/building-35-applications] Official Microsoft Site. Tutorials. [URL: http://www.asp.net/web-forms/tutorials]

PRILOGE
RPA-Seminarska-Vedic.zip Visual Studio projekt spletne aplikacije.

You might also like