Jednoduchá práce s daty v ASP.NET 2.0

4. díl - Jednoduchá práce s daty v ASP.NET 2.0

Tomáš Herceg       12.09.2007       C#, VB.NET, ASP.NET WebForms, HTTP/HTML, Databáze       21071 zobrazení

V tomto díle se podíváme na propojení ASP.NET stránky s databází a na vytvoření jednoduché tabulky, která zobrazuje data. Ukážeme si také základy úprav vzhledu komponent pomocí kaskádových stylů.

V minulém díle jsme si ukázali, jak včlenit stránku do stránky jiné. Pořád toho ale neumíme tolik, abychom mohli napsat pořádnou aplikaci. Většina webových aplikací (pokud to nejsou jen statické prezentace) je dnes napojena na relační databázi a data z této databáze zobrazuje. Protože se jedná o pravděpodobně nejčastější úkol, který při webovém vývoji budeme provádět, ASP.NET obsahuje bohatou škálu nástrojů a komponent, které nám tento úkol zjednoduší. Ještě než začneme, doporučuji k přečtení můj článek o databázích a jazyce SQL, určitě se vám bude hodit.

Komponenty pro práci s daty

Sada komponent v ASP.NET 2.0 obsahuje 5 serverových komponent pro zobrazování dat.

První z nich je komponenta GridView. Předaná data zobrazí jako tabulku, umožňuje mimo jiné třídění, stránkování, střídání stylů jednotlivých řádků a podporuje i editaci a mazání záznamů. Druhou komponentou je DataList, který je podobný jako GridView, ale máme větší svobodu volby pro zobrazení jednotlivých záznamů (nemusí to být tabulka). I tato komponenta podporuje editaci záznamů. Třetí komponentou je Repeater, který nám dává největší svobodu ohledně výstupního kódu a vzhledu dat. Neumí však záznamy editovat, což nám ale v mnoha případech nevadí, protože editaci nepotřebujeme, anebo ji provedeme na jiné stránce.

Tyto tři komponenty sloužily k zobrazení více záznamů, máme ovšem další dvě komponenty, které zobrazují pouze jeden záznam, umožňují jej editovat a kromě toho umí i přidávat záznamy nové. Jsou jimi DetailsView a FormView. DetailsView je opět tabulka - v jednom sloupci jsou názvy polí a ve druhém najdeme samotná pole pro data. FormView nám dává opět absolutní volnost v tom, jak bude záznam vypadat a jak se bude editovat.

To jsou tedy komponenty, které data zobrazují. Kromě toho musíme mít vždy další komponentu, která se připojuje k databázi a posílá do ní změny. Touto databází totiž nemusí být jen relační SQL databáze, ale i třeba soubor XML anebo nějaký bussiness-objekt, to však není nic pro začátečníky.

Vytvoření databáze

V Microsoft SQL Server 2005 máme dvě možnosti, jak vytvořit databázi. Buď si vytvoříme soubor s příponou MDF, který umístíme do adresáře App_Data naší aplikace a řekneme, že tento soubor chceme k serveru připojit, nebo necháme SQL Server vytvořit jej automaticky ve složce Program Files a tento soubor se po startu serveru připojí sám. Některé freehostingy podporují pouze první způsob - databázi nahrajete do složky App_Data a připojíte ji k serveru. Druhý způsob funguje většinou u komerčních hostingů, abyste data mohli spravovat vzdáleně. Data na server dostanete většinou tak, že na něm spustíte příslušné SQL příkazy, které vám vytvoří tabulky a naplní je daty. Tento soubor vám obyčejně vygeneruje nějaký program, někteří preferují psát si jej ručně.

My si ukážeme první způsob - vytvoření souboru MDF a připojení se k němu. Vytvořte si tedy novou webovou aplikaci v programu Visual Web Developer, v podokně Solution Explorer kliknětě pravým tlačítkem na složku App_Data a vyberte položku Add New Item.... Objeví se okno pro výběr typu souboru, zvolte typ SQL Database.

Výběr typu souboru

Přidání tabulky do databáze

Tlačítkem Add vytvoření potvrďte a po chvíli se nám vytvoří soubor Database.mdf. Tento soubor musí být vždy ve složce App_Data, kam se dostane jen a jen webová aplikace, ale ne již uživatel z venku (není možné si jej tedy jen tak stáhnout).

Do naší databáze budeme nejprve chtít vytvořit nějakou tabulku. Najděte si tedy podokno Database Explorer (pravděpodobně musíte v soupravě nástrojů ToolBox přepnou dole záložku, nebo musíte okno zobrazit v menu View položkou Database Explorer). Rozbalte databázový soubor, pravým tlačítkem klikněte na položku Tables a vyberte možnost Add New Table.

Ve Visual Web Developeru se otevře okno pro vytvoření struktury tabulky. Nenechte se zmást - každý sloupec ve výsledné databázové tabulce je v tomto okně jeden řádek. Chce se v tom jen trochu zorientovat. Vyplňte nyní řádky tak, jako je to na obrázku - první sloupec je název daného sloupce v tabulce, druhý je jeho datový typ. Pokud zaškrtneme třetí sloupec, do daného pole bude možné vložit prázdnou hodnotu NULL.

Struktura tabulky

Sloupec IdMesto je primární klíč, takže na tento řádek klikněte pravým tlačítkem a vyberte položku Set Primary Key.

Nastavení primárního klíče

Dále se do tohoto sloupce mají dosazovat automatické hodnoty. V okně vlastností pod tabulkou sloupců najděte vlastnost Identity Specification a nastavte hodnotu Yes.

Nastavení IDENTITY fieldu

Nyní stiskněte klávesovou zkratku Ctrl+S pro uložení a napište název tabulky Mesta. Tím jsme vytvořili tabulku měst. Mohli bychom ji stejně tak vytvořit pomocí příkazu CREATE TABLE, ale chtěl jsem ukázat i druhou možnost. Vývojové prostředí stejně na pozadí příkaz CREATE TABLE vygenerovalo podle nastavených hodnot a spustilo jej na databázi, je to tedy prakticky stejné.

Naplnění databáze daty

I na tohle bychom mohli použít SQL příkazy, ale ukážeme si i postup přes návrháře. Pravým tlačítkem klikněte v podokně Database Explorer na tabulku Mesta (musíte rozbalit složku Tables) a vyberte volbu Show Table Data.

Zobrazení dat tabulky

Vyplňte do tabulky data podle obrázku, první sloupec nevyplňujte, vyplní se sám! Některá města jsou skutečná, některá jsem si vymyslel, výběr je čistě náhodný.

Data do tabulky

Databázi uložte a máme hotovo. Nyní zbývá jen zobrazit data na stránce.

Vytváříme a nastavujeme GridView

Naše data bude nejjednodušší zobrazit v tabulce, k tomu se nám výborně hodí komponenta GridView. Přidejte tedy na stránku Default.aspx komponentu GridView. Přepněte se do režimu Design, budeme jej teď potřebovat. Když kliknete na komponentu GridView, objeví se vedle ní malinké políčko s šipkou (menší už asi opravdu být nemohlo). Když na něj kliknete, rozbalí se panel s nejběžnějšími úkoly této komponenty.

Rozbalovací panel s běžnými úkoly

Rozbalte seznam Choose Data Source a vyberte volbu New Data Source.... Otevře se nám dialog pro výběr datového zdroje. Vyberte položku Database a potvrďte tlačítkem OK.

Výběr typu datového zdroje

Po potvrzení se objeví druhé okno, kde musíme specifikovat databázi, ke které se chceme připojovat. K tomu se používá tzv. connection string (česky asi připojovací řetězec). Ten obsahuje údaje o tom, kde databáze je, jak se k ní mám přihlásit apod. Databáze, ke kterým jsem se již připojoval, nebo které jsou v aplikaci, se zobrazí v seznamu, stačí tedy vybrat položku Database.mdf a pokračovat dál.

Vybereme DATABASE.MDF a jedeme dál

Abychom nemuseli při použití databáze vypisovat celý připojovací řetězec, Visual Web Developer nám nabízí možnost uložit jej do konfiguračního souboru. Na stránkách na něj speciálním způsobem pouze "odkážeme", ale bude uložen na jednom místě. V případě, že se např. změní umístění databáze, stačí tento řetězec změnit na jednom místě a ne v každé stránce. Pojmenujte tedy přípojovací řetězec MyConnectionString a potvrďte další obrazovku. Příště se nám v seznamu dostupných databází objeví tento název a stačí jej jen použít.

Uložení ConnectionStringu

Nyní máme náš ConnectionString uložen a stačí již jen zadat dotaz, který se na databázi provede a jehož výsledky se zobrazí v komponentě GridView. V následujícím okně tedy zaškrtněte hvězdičku (všechny sloupce) a pokračujte dál. Dole v okně je vidět SQL příkaz, který se nad databází spustí.

Nastavení dotazu

V dalším okně si můžeme otestovat, co daný příkaz vrátí, to však dělat nemusíme. Potvrďte tedy tlačítkem Finish a máme vše nastaveno. V tomto poměrně dlouhém průvodci jsme nastavili vše, co budeme potřebovat. Ještě než budeme pokračovat, podíváme se na kód, který průvodce vygeneroval.

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="IdMesto" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField DataField="IdMesto" HeaderText="IdMesto" InsertVisible="False" ReadOnly="True"
                    SortExpression="IdMesto" />
                <asp:BoundField DataField="Nazev" HeaderText="Nazev" SortExpression="Nazev" />
                <asp:BoundField DataField="PocetObyvatel" HeaderText="PocetObyvatel" SortExpression="PocetObyvatel" />
                <asp:CheckBoxField DataField="Okresni" HeaderText="Okresni" SortExpression="Okresni" />
                <asp:BoundField DataField="Web" HeaderText="Web" SortExpression="Web" />
            </Columns>
        </asp:GridView>
        
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
            SelectCommand="SELECT * FROM [Mesta]"></asp:SqlDataSource>

Nejprve máme komponentu GridView. Má nastavenou vlastnost AutoGenerateColumns na hodnotu False, což znamená, že musíme uvést dovnitř elementu Columns všechny sloupce, které tam chceme mít. Pokud sekci Columns odstraníme a nastavíme tuto vlastnosti na True, sloupce se vygenerují samy až podle toho, co vrátí databáze. Nebudeme ale již moci ovlivnit jejich další nastavení. Průvodce nám je tedy vygeneroval již nyní, abychom nastavení měnit mohli.

Vlastnost DataKeyNames označuje název primárního klíče a je důležité zejména při editaci a mazání záznamů. Důležitou vlastností je pak DataSourceId, které obsahuje ID komponenty, která poskytuje data, a tou je SqlDataSource1.

Dále uvnitř GridView obsahuje definice sloupců - BoundField je obyčejný sloupec, který jen vypíše hodnotu z databáze, DataField je název sloupce, jehož hodnota se má vypsat, HeaderText je text zobrazený v záhlaví sloupce a SortExpression určuje název sloupce, podle kterého bychom třídili, pokud by bylo třídění povolené.

Druhou komponentou je SqlDataSource1, což je komponenta, která se připojuje k databázi a poskytuje data našemu GridView. Vlastnost SelectCommand obsahuje normální SQL příkaz, který získá příslušná data z databáze. O něco zajímavější je vlastnost ConnectionString. Do ní bychom měli přímo vypsat daný připojovací řetězec, ale aby nemusel být na každé stránce, použili jsme takzvaný Custom Expression, což je speciální konstrukce, která vrací hodnotu. Uvozuje se do znaků <%$ a %> a obsahuje vždy dvě hodnoty oddělené dvojtečkou. Pokud dáme před dvojtečku ConnectionStrings a za ni název daného Connection Stringu, vrátí nám tato konstrukce připojovací řetězec daného názvu. Kromě připojovacích řetězců můžeme přistupovat i do Resources (lokalizovatelná data aplikace) či do nastavení aplikace v konfiguračním souboru, ale o tom až v dalších dílech. Výhodou ASP.NET je, že si můžeme poměrně snadno napsat vlastní Custom Expressions, které nám vrátí, cokoliv budeme potřebovat.

Pokud nyní stránku spustíte klávesovou zkratkou Ctrl-F5, ukáže se vám tabulka s městy.

Stránka s tabulkou

Podrobnější nastavení tabulky

Každý asi vidí, že tato tabulka nevypadá úplně nejlépe a bude to chtít ještě pár úprav, aby to nějak vypadalo. Jednak potřebujeme změnit názvy v záhlaví sloupců, určitě nebudeme zobrazovat ID města, protože nikoho nezajímá, webové adresy by mohly být odkazy a místo zaškrtávátek bychom mohli zobrazit obrázek velkého města městům okresním a obrázek malého města městům menším. A nakonec by to chtělo tabulku nějak rozumně obarvit, aby se střídal řádek světlejší s řádkem tmavším atd.

Smazání prvního sloupce

Přepněte se do řežimu Design, rozbalte panel s úkoly naší tabulky a klikněte na odkaz Edit Columns.... Objeví se dialog pro správu sloupců - v seznamu Selected fields klikněte na první sloupec a odstraňte jej. ID města totiž uživatele nezajímá, je to čistě jen pro nás.

Smazání sloupce IdMesto

Úprava záhlaví sloupců

Klikněte na sloupec Nazev a ve vlastnostech vedle mu najděte vlastnost HeaderText. Nastavte její hodnotu na Název města. Tím se změní záhlaví tabulky.

Sloupci PocetObyvatel nastavte název na Počet obyvatel, sloupci Okresni nastavte název na prázdný text a sloupci Web nastavte název na Oficiální web města.

Pokud nyní stránku uložíte a stisknutím Ctrl-F5 v prohlížeči obnovíte, je vidět, že tabulka se změnila a vypadá o něco lépe. Pořád to ale ještě není ono.

Formátování zobrazených dat ve sloupcích

Nejvíce se mi asi nelíbí sloupec s počtem obyvatel. Čísla by měla být určitě zarovnaná doprava a ve správném českém formátu - ne 17345, ale 17 345, zkrátka rozdělené na trojice kvůli zlepšení čitelnosti. K tomu slouží vlastnost DataFormatString. Ještě než ji ale nastavíme, řekneme si něco o formátování v .NET frameworku obecně.

Formátování se využívá k transformaci zápisů dat a jejich dosazení do šablony. Pokud tedy máme šablonu Hodnota {0} je číslo a dosadíme do ní hodnotu 123456, vyjde nám Hodnota 123456 je číslo. Místo {0} se nám dosadí předaná hodnota. My ji však chceme nějak zformátovat, za nulu tedy uvedeme dvojtečku a za dvojtečku popis požadovaného formátu. Přesné možnosti formátování jsou v dokumentaci (anglicky), já zde tedy uvedu pár příkladů. Formátovat můžeme čísla a datum, máme několik předdefinovaných formátů, pokud nám nevyhovují, můžeme si poskládat vlastní. Nás bude zajímat předdefinovaný číselný formát n. Ten dělá přesně to, co potřebujeme - zformátuje číslo podle národního nastavení. Za toto písmenko můžeme specifikovat počet desetinných míst, pro češtinu jsou standardně totiž 2. Tento počet musí být vždy dvojciferný, takže uvedeme n00. Tvrdit, že město má třeba 17 634,00 obyvatel je totiž přinejmenším odvážné. Šablona pro zformátování našeho čísla bude tedy {0:n00}. Formátování samotné by vydalo na celý článek, je to opravdu poměrně komplexní záležitost.

Nastavte tedy sloupci s počtem obyvatel hodnotu vlastnosti DataFormatString na hodnotu {0:n00}. Tím zajistíme, že se číslo zformátuje. Zde bych ale rád upozornil na jednu oficiálně uznanou chybu v ASP.NET - formátování nefunguje, pokud zároveň nenastavíme vlastnost HtmlEncode na hodnotu False. Tato vlastnost slouží k tomu, aby se zabránilo vypsání HTML kódu databáze (je to z bezpečnostních důvodů, pokud to potřebujeme, musíme hodnotu této vlastnosti nastavit na False), u čísel však toto nehrozí, takže ji vypnout můžeme.

A protože chceme počet obyvatel zarovnat doprava, rozbalte skupinu vlastností ItemStyle a vlastnost HorizontalAlign nastavte na hodnotu Right. Zavřete dialog, uložte a otevřete v prohlížeči. Vidíme, že počet obyvatel vypadá daleko čitelněji.

Webové adresy jako odkazy

Další věcí, která by byla na místě, je zobrazit webové adresy jako funkční odkazy. K tomu ale musíme provést jednu úpravu - sloupec BoundField toto neumí. Musíme použít jiný typ sloupce, a to HyperLinkField. Smažte tedy sloupec Oficiální web a v horním seznamu přidejte nový sloupec typu HyperLinkField.

Přidání sloupce HyperLinkField

Nastavte mu opět hodnotu vlastnosti HeaderText na hodnotu Oficiální web a hodnotu vlastnosti DataTextField na hodnotu Web (název sloupce, který se bude vypisovat).

Dále nastavte hodnotu vlastnosti DataNavigateUrlFormatString na hodnotu http://{0} (před URL adresami musí být http), to je šablona, do které ale musíme něco dosadit. To "něco" specifikujeme vlastností DataNavigateUrlFields, do ní tedy napíšeme opět název sloupce Web, jehož hodnotu chceme dosadit.

Možná si řeknete, že za takhle dlouhé názvy vlastností by se mělo střílet (ale ještě to není tak strašné, v .NETu najdete i o dost delší názvy). Věřte, že mám raději dlouhé názvy, ze kterých poznám alespoň přibližně, čeho se dočkám, než krátký název, ze kterého bych nepoznal nic. Pojmenování těchto vlastností má svoji logiku - vždy jsou to dvojice. DataTextField a DataTextFormatString nastavují vlastnost Text, DataNavigateUrlFields a DataNavigateUrlFormatString nastavují vlastnost NavigateUrl. A vždy první vlastnost obsahuje název (případně názvy) sloupců, jejichž hodnoty se mají dosazovat, zatímco druhá je šablona, která je nějak zformátuje.

Pokud tedy stránku uložíte a spustíte, budou se webové adresy chovat jako odkazy.

Obrázek místo zaškrtávátek

Abychom měli v projektu pořádek, vytvoříme si v projektu novou složku a pojmenujte ji images. Stačí kliknout pravým tlačítkem v Solution Exploreru na název projektu a vybrat New Folder. Stáhněte si a rozbalte tento archiv se dvěma obrázky a rozbalené obrázky uložte do naší složky images. Ikonky jsem dělal já a podle toho také vypadají, pokud byste našli lepší, určitě mi napište a já je vyměním, tyhle jsou opravdu strašné.

Jelikož pole Okresni v databázi je typu BIT, ASP.NET jej automaticky převede na hodnotu typu Boolean. Proto jsem obrázky pojmenoval okresni_True.gif a okresni_False.gif, budeme totiž hodnotu ze sloupce dosazovat do adresy.

V okně pro editaci sloupců smažte sloupec s okresním městem a přidejte hned na začátek nový sloupec ImageField. Jeho vlastnost DataImageUrlFields nastavte na hodnotu Okresni a jeho vlastnost DataImageUrlFormatString nastavte na hodnotu ~/images/okresni_{0}.gif. Tím dosáhneme správné adresy, všimněte si, že opět používám adresu začínající vlnovkou.

Opět stránku můžete uložit a prohlédnout si, jak vypadá.

Elegantní vzhled tabulky

Možná jste si na panelu s nejběžnějšími úkoly pro GridView všimli odkazu Auto format, který otevře malé okno, kde si můžete vybrat jeden z předdefinovaných formátů tabulky. Nechápu, proč tuto funkci zahrnuli, jediné, co udělá, je totální bordel v kódu - výsledné HTML je tabulka hemžící se inline styly, která vypadá naprosto šíleně. Bohužel, dost lidí tuto funkci používá a proto některé ASP.NET aplikace vypadají tak, jak vypadají. Je ovšem pravda, že některé formáty jsou poměrně hezké, takže se jimi můžeme inspirovat. Pokud ale můžeme, doporučil bych formátovat pomocí CSS, GridView je na to připraven.

Přepněte se tedy do režimu kódu a do sekce head přidejte tuto definici stylů (máme jen jednu stránku, ale principiálně nám samozřejmě nic nebrání umístit je do externího souboru).

    <style type="text/css">
        table.GridView
        {
            border-collapse: collapse;
        }
        tr.GridView0
        {
            background-color: #c8d8ff;
        }
        tr.GridView1
        {
            background-color: #e0e8ff;
        }
        table.GridView td
        {
            border: none;
            padding: 2px 10px;
        }
        table.GridView th
        {
            background-color: #80a0ff;
            color: white;
            border: none;
            padding: 2px 10px;
        }
    </style>

První definice stylu je pro samotné GridView jakožto element table. Předpokládám, že můžeme mít i jiné tabulky, na které tento styl aplikovat nechceme, proto jsem vytvořil třídu GridView. Pak následují dvě třídy pro řádek tabulky - GridView0 a GridView1. Tyto styly řádků se budou střídavě opakovat v tabulce, docílíme tím lepší orientace a čitelnosti. Jeden řádek tedy bude světlý, druhý tmavý. Dále mám styl buňky, uděláme kolem textu trošku prostor a buňky roztáhneme. A nakonec máme buňky záhlaví tabulky, které barevně odlišíme od zbytku.

Nyní již jen zbývá říci komponentě GridView, aby si nastavila třídu GridView, a jejím řádkům, aby střídaly třídy GridView0 a GridView1. Je to poměrně jednoduché.

Komponenta GridView má vlastnost CssClass, nastavte ji tedy na hodnotu GridView. Poměrně často se v ASP.NET budeme setkávat s komplexní vlastností typu Style - ta totiž obsahuje mnoho podvlastností, a proto ji vývojáři nastavili tak, aby se mohla zadat jako vnitřní značka. Dovnitř značky asp:GridView (ale ne do sekce Columns!) vložte tyto dva řádky:

            <RowStyle CssClass="GridView0" />
            <AlternatingRowStyle CssClass="GridView1" />

RowStyle je styl normálního řádku tabulky, nastavíme tedy CSS třídu GridView0. AlternatintgRowStyle je styl každého druhého řádku, nastavíme mu tedy CSS třídu na GridView1. A je hotovo.

Toto řešení je mnohem lepší než použití funkce AutoFormat. Ta do GridView vytvoří tyto značky také, ale pozadí, okraje, fonty atd. jim nastavuje ručně, ne přes CSS. Tím pádem se pro každý řádek a buňku vyrenderují do HTML jako inline styly, takže kód stránky je daleko větší a nepřehledný. Toto řešení je rozhodně lepší.

Když stránku uložíte a zobrazíte v prohlížeči, bude vypadat takto:

Tabulka s městy

Až na moje odporné ikonky vypadá tabulka docela pěkně (ještě by prospěla změna písma, ale to pomocí CSS zvládnete velmi snadno). To je ale pro dnešek vše, v příštím díle se podíváme na témata, která nám umožní, aby všechny komponenty GridView vypadaly stejně i bez toho, abychom museli každé nastavovat tyto CSS třídy. ASP.NET je pro tuto funkcionalitu připraveno, stačí ji jen použít.

 

hodnocení článku

1 bodů / 1 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Mohlo by vás také zajímat

Genericita, rozhraní a dědičnost

Jazyk C# je multiparadigmatický, což v praxi znamená, že v něm můžeme dělat hodně věcí. Jak ale do sebe jednotlivá paradigma zapadají? Co se hezky doplňuje a co není vzájemně kompatibilní? V tomto článku chci popsat, jak se chová IEquatable vzhledem k dědičnosti typu T.

Windows 10 GameJam: konference a herní hackathon

Visual Studio 2017 je venku!

 

 

Nový příspěvek

 

Diskuse: Jednoduchá práce s daty v ASP.NET 2.0

Nazdar mám problém s SQL :( nefunguje mi pripojenie do databazi a ani pridanie SQL Server Database :( tu sú screenshoty :

Chyba v SQL Server Management (SP3) :

http://yfrog.com/5ccaptureppp

Pridávanie SQL Server Database :

http://yfrog.com/12capture1vgp

Chyba po pridaní SQL Server Database :

http://yfrog.com/3mcapture3tp

PS: používam Visual Web Devenloper a Visual Basic .NET verzie 2010 a SQL Server Management (SP3) 2005 . Nemôže byť problém vtom že verzia 2010 nekomunikuje s 2005 ale s 2008 ??

Dakujem za pomoc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

problem vyrieseny :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Jednoduchá práce s daty v ASP.NET 2.0

Dobrý den,

ze všeho nejdřív bych chtěl autorovi poděkovat za velice přehlednou ukázku, jak vytvářet web v ASP.

Narazil jsem však v ukázkovém webu na jeden problém, který se mi nedaří rozlousknout.

V dílu 4 je na posledním obrázku tabulka, která má sloupce "Název města", "Počet obyvatel" a "Oficiální web". Při otevření stránky v prohlížeči jsou ale sloupce setříděny podle skryté položky "IdMesto". Snažím se kód upravit tak, aby po otevření webové stránky byla tabulka setříděná podle sloupce "Počet obyvatel" a nedaří se mi to. Použití ORDER BY v SQL SELECtu nezabírá.

Předem díky za radu.

RP

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Jednoduchá práce s daty v ASP.NET 2.0

Náhodou ty ikony jsou krásné.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Jednoduchá práce s daty v ASP.NET 2.0

Ctu si tento tutorial, zkousim si to co delal autor a zaroven si buduju vlastni projekt (jen na zkousku). Narazil jsem vsak na problem. Mam nasledujici stranku.

http://shared.lucinkapes.com/upload/files/screen_NETv2.jpg

Vlevo je do DataList vypsany seznam kategorii zbozi z tabulky kategorie. Vpravo je GridView do ktereho je dle navodu v tomto dile tutorialu nacten obsah tabulky aukce (vsechny aukce).

Chci docilit toho, aby se v pravo zobrazovaly po kliknuti na nejakou kategorii jen aukce v ni obsazene. Samozrejme ze databazi mam poresenou tak, ze ty dve tabulky jdou propojit. Spis mne jde o to jak udelat v tom seznamu kategorii odkazy a jak tomu GridView vnutit nejaky jiny SQL dotaz, ktery by mel jeste WHERE kategorie = @id_kategorie.

Kdyz uz jsme u predavani parametru pomoci URL, tak jsem zkousel toto:

Default.aspx?kategorie=5
TextBox1.Text = Request.QueryString("kategorie")

Bohuzel to nefunguje a napise mne to, ze QueryString neni funkce ale parametr.

Strukturu stranky mam udelanou stylem, ze vse co vidite az na tabulku s vypisem aukci je MasterPage a ta tabulka se tam vklada jako "Content Page" a je v souboru Default.aspx.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Závidím vaše pochopení, já tak inteligentní nebyl :-(

Již u věty "vložíme komponetu GridView" jsem zhasl jako svíčka, nepochopil jsem jak do Default.aspx vložit GridView.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dokázal by mi někdo poradit?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Jednoduchá práce s daty v ASP.NET 2.0

Úvodem musím napsat, že tento seriál se mi moc líbí. Alespoň pro mě je to naprosto srozumitelný. Ani jsem netušil, že zkušenosti z visual basicu ještě někdy uplatním.

Možná by ale nebylo od věci ukázat kam napsat conn. string když nemám databázi na lokálním počítači, na kterým dělám web, ale když mám databázi někde na webhostingu. Ale pokud to bude náplní dalšího dílu tak počkám. Snad...no ale kdyby to šlo tak bych uvítal odpověď dříve. :-))

Díky Milan

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Nu, co se mého postřehu, po 3 hodinovém čtení a surfování po internetu za temného světla s nedostatkem spánku, týče, tak je databáze uložena (název podle článku) v souboru database.mdf ve složce App_Data.

Tudíž pokud se na webhosing nahraje i tato složka, webová aplikace má databázi plně funkční.

Zkuste to a uvidíte. Je to jen můj postřeh, pokud se mílím, opravte mě.

A chtěl bych se zeptat, prosím vás, jaké jsou české free webhostiny, které podporují ASP.NET?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Jednoduchá práce s daty v ASP.NET 2.0

Dobrý den,

díky za nový díl!

Prosím o radu, ztroskotal jsem na samém začátku a problém nevyřešil.

Po "Tlačítkem Add vytvoření potvrďte a po chvíli " dostanu hlášku:

"Generating user instances in SQL Server is disabled. Use sp_configure 'user instances enabled' to generate user instances."

Jak se dostanu na nastavení 'user instances enabled'? Instalaci Microsoft SQL Server Express mám z "Microsoft SQL Server Express With Advanced Services SP2". S nastavením v "SQL Server Configuration Manager" jsem si neporadil.

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Spusťte si program Server Management Studio Express, připojte se k serveru a klikněte na tlačítko New Query vlevo nahoře.

Do okna napište tento příkaz

sp_configure 'user instances enabled', '1'

a stiskněte F5, aby se provedl. Pak jej smažte a místo něj napište příkaz

reconfigure

a opět stiskněte F5.

Pak restartujte Visual Web Developer a mělo by to fungovat.

Jediné, co nevím, je, proč to dělá. Mě se to nikdy nestalo. Máte administrátorská práva?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za návod.

Nastavení prošlo až po přihlášení na účet Administrator, ač můj má plná práva. Po nastavení a přihlášení na můj účet již vytvoření databáze v ASP.NET prošlo. Na pokračování zatím nemám čas, myslím, že další problém nebude.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

To je divné, mě to funguje a nejsem přihlášen jako Administrator, práva správce ovšem mám. Nejste třeba přihlášený do domény nebo tak něco?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jde o lokální počítač, Windows XP prof., SP2, všechny aktualizace, instalace SQL proběhla normálně, po prvním spuštění manažeru jsem nechal vše proběhnout automaticky. Se zřízením databáze dle min. dílu nebyl problém, až v ASP, jak jsem již napsal. Nastavení dle Vašeho návodu končilo chybou (dvě čísla chyb, snad vnitřní nebo vnější chyba či podobně, spěchal jsem, hlášení jsem si nezkopíroval). Zkoušel jsem odstavit FireWall a AVG, ale bez výsledku.

Po přihlášení na Administratora zřízení databáze v ASP také nešlo, úplně stejně jako z mého účtu. Na SQL manažeru byl po prvním spuštění stejný průběh autom. konfigurace jako z mého účtu. Rozdíl byl až ten, že nastavení dle Vašeho návodu prošlo.

Mám zkušenost, že i v jiných případech jen práva administrátora (členství v Administrators) nestačí - na jiných počítačích. Např. z ACERu nejdou instalace ClickOnce ze serveru jinak než z účtu administrátora, spuštění některých programů ap. Má originální instalaci XP, žádné zákazy přidávány nebyly.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dost podstatný postřeh. Díky za radu.

Než jsme si všiml. že se to tu řeší, tak už jsem skoro házel flintu do žita ::) Odpověď jsem sice našel na foru, ale stejně moc děkuji :)

Článek je super, jen tak dál...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Jednoduchá práce s daty v ASP.NET 2.0

Mám nainstalovaný Visual Web Developer 2008 a nemůžu přijít na to jak se přidávají do tabuky ROWs.

Díky

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Diskuse: Jednoduchá práce s daty v ASP.NET 2.0

Fajn!

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback