Tales from under the Mountain

May 2009 - Posts

Još jedna prezentacija

Pošto me nekoliko ljudi pitalo, postavio sam i prvu prezentaciju koju sam držao juče na Dev Days 2009 na Sajmu na svoj Sky Drive. Link je http://cid-6a987abbbcbd5556.skydrive.live.com/self.aspx/.Public. Pošto postoji interesovanje za ovu temu, verovatno ću da uradim i jedan detaljniji post o čitavoj Software + Service ideji, tako da obratite pažnju na ovaj blog u sledećih 7 do 10 dana.

Pozdrav svima i vidimo se na ovom blogu kada se budem vratio sa hladnog severa Evrope.

 

Out.

B.D.

Posted: May 21 2009, 11:39 AM by blackdwarf | with no comments
Filed under:
PPT-ovi sa Dev Days 2009

Kao što je obećano, postavljam deck za Data Layer deo priče na nedavnom Dev Days. Isto tako, dobio sam komentare tokom dana da je event iako dobar, bio malo kondezovan po pitanju sadržaja. Da ne bise osali uskraćeni za detaljnije informacije, ispod dajem neke osnovne linkove ka resursima za teme koje sam pokrio u toku predavanja.

Pošto mi je MSForge zadavao probleme sa upload-om fajla, verovatno zbog veličine, isti možete da preuzmete sa mog SkyDrive-a na http://cid-6a987abbbcbd5556.skydrive.live.com/self.aspx/.Public.

Još jednom pozivam sve koji su zainteresovani da ostave svoje komentare na MSForge forumu, ne samo mišljenju o eventu, već i generale ideje šta je to što bi trebalo/moglo da se predstavi široj publici.

 

Out.

B.D.

Visual Studio 2010 Beta 1 download!!

Visual Studio 2010 Beta 1 se konačno pojavio za sve MSDN pretplatnike. Sada možete preuzeti VS2010 Professional, VS2010 Team Suite, TFS 2010 kao i instalacije za .NET Framework 4.0 na MSDN pretplatama.

Postoji mnogo novih stvari u VS2010 zbog kojih biste zaita želeli da skinete i probate Team Suite:

  • Code focused work
  • Novi dizajneri u ediciji za Arhitekta (koja je deo Team System linije proizvoda)
    • Use Case dizajneri
    • UML je sada kompletno podržan
    • Novi Architecture Explorer, alat koji vam omogućava da vidite celo rešenje kao dijagram i da imate dvosmernu komunikaciju sa kodom i sa TFS-om
  • Novi test manager
    • “Camano” test runner
    • Novi test recorder koji omogućava da se snime i video zapisi manuelnog testiranja i da se zatim vežu za
  • Nove mogućnosti C# jezika u verziji 4.0
    • Novi “dynamic” tip
    • Nove COM interop stvari
    • Opcionalni parametri
  • Nove stvari za Visual Basic jezik
    • Automatski properties
    • Konačno! Izbačen je “_” karakter kao new line karakter…ovo će učiniti da kod izgleda dosta lepše.
    • Inline lambdas
    • Inicijalizatori za kolekcije
  • F# sada dolazi sa VS2010, što znači da postoji duboka podrška za programiranje u ovom funkcionalnom jeziku unutar VS-a
  • Novi WPF dizajner
    • Inače, ceo code editor je sada implementiran u WPF-u, što omogućava dosta lakšu implementaciju eventualnih dodataka za code editor.
  • Silverlight je sada uključen out-of-the-box u Visual Studio
  • Dosta novih stvari za web developere
    • Dynamic Data sa novim mogućnostima
    • Routing za web forms (isti kao što postoji u MVC Framework-u)
    • Nove web forms kontrole kao što su QueryExtender
    • Podrška za web deployment tool iz VS-a
    • Poboljšanja u dizajneru, JS Intellisense je sada dosta pametniji i dinamičniji

Toliko od mene, mali prekid u Dynamic Data seriji postova, ali mislim da je bio opravdan. :)

Out.

B.D.

ASP.NET Dynamic Data 2/n – izmene postojećih resursa

Prošli post u seriji o Dynamic Data tehnologiji  je govorio o tome kako možete da napravite kompletno funkcionalan CRUD UI sa svega par linija koda. Međutim, na taj način ostavljate otvoren ceo kod

U ovom postu ću se pozabaviti drugom stvari, a to je kako se template-i koji dolaze uz Dynamic Data mogu izmeniti da bi odgovarali specifičnim potrebama. Postoji nekoliko osnovnih načina kako se to može uraditi. Prvi, i najlakši, je izmena izgleda generisanog HTML koda keroz izmene u glavnom CSS fajlu koji se dobija kada se napravi sajt. Pošto su u pitanju standardna CSS pravila, nema potrebe da se zadržavamo na ovom koraku. Drugi načina je izmenom Pagetemplates koji sadrže u sebi kontrole za prikaz podataka. Treći način je izmenom korisničkih kontrola ili pravljenjem novih. Naravno, svaki od ovih načina je kumulativan, odnosno, veoma je jednostavno napraviti novi Page template za listanje svih slogova iz baze podataka i zatim modifikovati ponuđenu korisničku kontrolu koja prikazuje datum, da, recimo, odvaja na specifičan način mesece i dane.

No, krenimo od najlakšeg, a to je izmena strana.

Izmena strana

Dynamic Data dolazi sa nekoliko specijalnih foldera, od kojih je jedan i “Custom Pages” folder. U njemu je potrebno napraviti pod-folder sa imenom tabele za koju želimo da izmenimo template. Pošto radimo sa Chinook bazom podataka, želim da izmenim template za listanje za Artist tabelu, recimo. Proces je veoma prost. Prvo ću napraviti pod-folder sa imenom Artists u CustomPages folder (u slučaju da koristite EF, folder će se zvati Artist). Rešenje posle toga izgleda ovako:

image

Zatim ću uzeti List.aspx fajl i prekopirati ga u folder koji sam napravio. Posle toga, modifikacije postaju trivijalne, odnosno svode se na izmenu ASPX strane.

image

Postoji, doduše, jedan problem koji su pažljivi čitaoci verovatno mogli da predvide. Naime, ako ostavimo stvari kakve trenutno jesu, prilikom bildovanja rešenja će doći do gomile grešaka. List strana se kompajlira u List klasu, koje je označena kao partial, što znači da će se pojaviti dvostruke deklaracije polja i slične grešek. Da biste to izblegli, potrebno je da promenite namespace u codebehind i designer klasama, i da zatim u ASPX fajlu namestite Inherists atribut @Page direktive da pokazuje na tačan namespace i klasu u njemu.

Primera radi, želeo bih da izmenim način prikaza cele Artist tabele tako da sprečim GridView kontrolu da automatski generiše kolone i da umesto podataka svih kolona prikažem samo jednu, “Name”. Način da se to uradi je veoma prost. Prvo ću iskoristiti atribut GridView kontrole AutoGenerateColumns da isključim default ponašanje tako što ću vrednost staviti na “false”. Potom ću iskoristititi DynamicField kontrolu koja dolazi uz Dynamic Data. Svaka kolona koju želimo da prikažemo zahteva po jedan DynamicField; DynamicField koristi DataField atribut da bi znao koju kolonu da povuče iz modela. U mom slučaju, to je “Name”. Ceo kod izgleda:

   1:  
   2:             <asp:GridView ID="GridView1" runat="server" DataSourceID="GridDataSource"
   3:                 AllowPaging="True" AllowSorting="True" CssClass="gridview" AutoGenerateColumns=false>
   4:                 <Columns>
   5:                     <asp:TemplateField>
   6:                         <ItemTemplate>
   7:                             <asp:HyperLink ID="EditHyperLink" runat="server"
   8:                                 NavigateUrl='<%# table.GetActionPath(PageAction.Edit, GetDataItem()) %>'
   9:                             Text="Edit" />&nbsp;<asp:LinkButton ID="DeleteLinkButton" runat="server" CommandName="Delete"
  10:                                 CausesValidation="false" Text="Delete"
  11:                                 OnClientClick='return confirm("Are you sure you want to delete this item?");' />&nbsp;
  12:                             <asp:HyperLink ID="DetailsHyperLink" runat="server" NavigateUrl='<%# table.GetActionPath(PageAction.Details, GetDataItem()) %>'
  13:                                 Text="Details" />
  14:                         </ItemTemplate>
  15:                     </asp:TemplateField>
  16:                     <asp:DynamicField DataField="TitleSrp" />
  17:                     <asp:DynamicField DataField="Page" />
  18:                 </Columns>
  19:  
  20:                 <PagerStyle CssClass="footer"/>        
  21:                 <PagerTemplate>
  22:                     <asp:GridViewPager runat="server" />
  23:                 </PagerTemplate>
  24:                 <EmptyDataTemplate>
  25:                     There are currently no items in this table.
  26:                 </EmptyDataTemplate>
  27:             </asp:GridView>
 

Jedan F5 kasnije možemo da proverimo da li naše izmene rade tako što ćemo kliknuti na Artists tabelu i videti da se sada lista samo ime umetnika, a ne i ostali podaci iz tabele u bazi podataka.

Naravno, Dynamic Data će nastaviti da prikazuje sve ostale tabele na isti način kao do sada. Ukoliko bi zahtev bio da se promeni listanje svake tabele, onda bismo priblegli prostijem rešenju a to je izmena List.aspx strane (i opstalih strana po potrebi) koje se nalaze u PageTemplates folderu.

Ukoliko iz nekog razloga se modifikacije ne vide a build greške ne postoje, proverite da li ste ispravno nazvali folder. Još jednom, ukolko koristite LINQ to SQL, folder je potrebno nazvati po imenu entiteta u množini. Ukoliko koristite Entity Framework, potrebno je nazvati po imenu entiteta u jednini.

Izmena field templates korisničkih kontrola

Menjanje PageTemplates fajlova je jedan od načina. Drugi način je izmena ili stvaranje novih templates koji služe za prikaz polja po tipu podataka.

Izmena ovih polja se verši veoma jednostavno, tako što se menja korisnička kontrola. Recimo da želim da pozadina polja za unos višelinijskog teksta (čitajte: textarea) bude žute boje, tekst crne boje, boldovan. Ovo mogu da izmenim ili kroz CSS fajl, što je jedna opcija, ali da bih pokazao primer, iskoristiću slične properties u samoj kontroli. Posle dodavanja potrebnih osobina, kod izgleda ovako:

   1: <%@ Control Language="C#" CodeBehind="MultilineText_Edit.ascx.cs" Inherits="DynamicDataTest.MultilineText_EditField" %>
   2:  
   3: <asp:TextBox ID="TextBox1" runat="server" CssClass="droplist" TextMode="MultiLine" Text='<%# FieldValueEditString %>' Columns="80" Rows="5" BackColor="Yellow" Font-Bold="true"></asp:TextBox>

Ova izmena će imati efekta na nivou celog UI-ja, dakle svako polje jkoje je tekstualno i za koje će se upotrebiti višelinijska kontrola za unos teksta će imati žutu pozadinu,.

Kuda dalje?

Kraj svakako ovde. Prvo, postoji još jedna moguća modifikacija, a to je kreiranje sopstvenih field templates. Recimo da želimo da napravimo naš kod koji će imati drugačiju validaciju za datetime tip podataka iz baze. Kada jednom napravimo naš field template, možemo ga registrovati i od tog trenutka, Dynamic Data će koristiti njega za rad sa kolonama iz baze podataka koja su tog tipa.

Druga mogućnost se ne tiče modifikacija per se, već drugog načina upotrebe Dynamic Data tehnologije. Ukoliko ste bacili pogled, tokom čitanja ovijh postova, na template strane koje doalze uz novi projekat, verovatno ste primetili da su tabele uglavnom predstavljenje kroz GridView kontrole. Ne postoji nikakva magija u svome ovome, to zaista jesu “samo obične” kontrole na koje smo navikli od ASP.NET-a 2.0. Dynamic Data donosi nove kontrole koje nam omogućavaju da dodamo “pametna” polja u GridView ili ListView (FormView itd.); ta polja nam daju mogućnost ne samo da imamo potpuno konfigurabilan način kako da prikažemo naše podatke, već da definišemo i koje želimo ili ne želimo da prikažemo, na koji način želimo da ih prikažemo i slično.

Više o ova preostala dva načina upotrebe Dynamic Data tehnologije će biti reči u sledećim postovima u seriji.

Out.

B.D.

Posted: May 03 2009, 09:02 AM by blackdwarf | with no comments
Filed under: ,