Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

7. diel - Zobrazovanie a administrácia článkov v ASP.NET

V minulej lekcii, Výpis článkov z databázy v ASP.NET , sme si založili databázu článkov a zobrazili ich zoznam pomocou kontrolky datalist. Články v tomto zozname sa odkazovali na stránku Clanek.aspx, ktoré odovzdávali parameter v QueryString s URL článku, ktorý sa má zobraziť. V dnešnom C# .NET tutoriálu naprogramujeme práve stránku Clanek.aspx.

Pridajte si k projektu nový Web Form with Master Page, ktorý pomenujte Clanek.aspx.

Z ToolBox na formulár pretiahneme kontrolku FormView. Tá nám umožňuje zobrazovať a aj administrovať jednu určitú položku z databázy.

Nastavenie DataSource

Presunieme sa do Design a pomocou šípky vpravo pri FormView nastavíme DataSource na New DataSource.

Pridanie DataSource FormView v ASP.NET Web Forms - ASP.NET Web Forms

Tým sa nám vyvolá nám poznáme okno pre vytvorenie nového zdroja údajov. Vyberieme Database a ID zdroja zvolíme ako ClanekDataSource.

Tvorba DataSource pre FormView v ASP.NET Web Forms - ASP.NET Web Forms

V ďalšom okne zvolíme náš ConnectionString, ktorý sme si nechali vytvoriť minule.

Tvorba DataSource pre FormView v ASP.NET Web Forms - ASP.NET Web Forms

Ďalej ako tabuľku vyberieme Clanok, zaujímať nás budú všetky stĺpce. K dopytu pridáme klauzulu WHERE pomocou rovnomenného tlačidla. Tým opodmínkujeme ktoré články chceme zobraziť.

Tvorba DataSource pre FormView v ASP.NET Web Forms - ASP.NET Web Forms

Podmienku aplikujeme na stĺpec Url. Operátor necháme na znamienko rovnosti a ako zdroj údajov zvolíme QueryString. To je parameter z URL adresy. Do QueryString field vyplníme názov parametra, čo je clanek. Pomocou tlačidla Add podmienku pridáme a formulár potvrdíme.

Tvorba DataSource pre FormView v ASP.NET Web Forms - ASP.NET Web Forms

Pomocou tlačidla Advanced ... si následne necháme automaticky vygenerovať aj SQL príkazy pre vloženie a editáciu článku.

Tvorba DataSource pre FormView v ASP.NET Web Forms - ASP.NET Web Forms

Všetko potvrdíme a dokončíme.

Vygenerovalo sa nám pomerne dosť kódu. Samotný FormView v sebe teraz obsahuje 3 šablóny: EditItemTemplate, InsertItemTemplate a ItemTemplate. Podľa názvu asi tušíte, že prvá je pre editáciu, preto v nej sú textbox. Tá druhá je pre vkladanie a tretí pre výpis.

Úprava šablón

Všetky 3 šablóny si postupne upravíme. Začnime s šablónou pre výpis záznamu.

ItemTemplate

Pri výpise článkov nás určite nebude zaujímať jeho Id a Popis. Zaujímať nás nebude ani titulok, pretože ten budeme chcieť nastaviť celej stránke namiesto toho, aby sme ho niekam vypísali. Táto 3 polia z šablóny odstránime. Obsah vypíšeme jednoducho do zvyšného priestoru pomocou Eval, Bind sa používa pre obojsmerné previazanie hodnôt, ktoré v tomto prípade nechceme.

Kód ItemTemplate bude vyzerať nasledovne:

<ItemTemplate>
    <%# Eval("Obsah") %>
    <asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit" />
    &nbsp;<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete" Text="Delete" />
    &nbsp;<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" CommandName="New" Text="New" />
</ItemTemplate>

Nastavenie titulku stránky

Ako už bolo povedané, titulok stránky Clanek.aspx budeme chcieť nastavovať dynamicky podľa článku, ktorý je vo FormView zrovna načítaný. Najprv úplne odstránime nastavenie titulku na prvom riadku šablóny Clanky.aspx:

<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Clanek.aspx.cs" Inherits="AspBlog.Clanek" %>

Titulok budeme chcieť nastaviť zo stĺpčeku titulok toho databázového riadku (záznamu), ktorý je načítaný vo FormView. Tento riadok je prístupný pod vlastností DataItem. Tá je dostupná iba v udalosti Data_Bound.

FormView nastavíme ID na ClanekFormView a naklikne mu udalosť DataBound. To urobíme v Property oknu, kde prejdeme ikonou blesku na udalosti.

Do udalosti vložíme nasledujúci kód:

protected void ClanekFormView_DataBound(object sender, EventArgs e)
{
    DataRowView radek = (DataRowView)ClanekFormView.DataItem;
    if (radek != null)
    {
        Title = radek.Row["Titulek"].ToString();
    }
}

Najprv načítame DataRowView z FormView. Tým máme zobrazovaný databázový riadok. Ak nejaký existuje, nastavíme titulok stránky na hodnotu stĺpca Titulok.

Môžete si aplikáciu spustiť a otvoriť nejaký článok:

Zobrazenie článku z databázy v ASP.NET Web Forms - ASP.NET Web Forms

Máme teda zobrazený prvý článok z databázy. Ukazuje sa jeho titulok a text. Ja som tam toho textu príliš nedal, to môžete napraviť hneď ako sprevádzkujeme editor.

EditItemTemplate

Presunieme sa do editačné šablóny kontrolky FormView. Tu odstránime stĺpec Id, pretože ten nebudeme nikdy meniť. TextBoxům s obsahom a popisom nastavíme vlastnosť TextMode na Multiline. Elementy sa tým zmení z bežného inputu na viacerých riadkov textarea. Pretože vygenerovaný formulár nie je príliš vábny, vložíme ho do tabuľky a kontrolkám nastavíme veľkosť. Samozrejme by sa to dalo urobiť aj čisto cez CSS.

EditTemplate bude po úprave vyzerať takto:

<EditItemTemplate>
    <table>
        <tr>
            <td>Titulek</td>
            <td><asp:TextBox Width="500" ID="TitulekTextBox" runat="server" Text='<%# Bind("Titulek") %>' /></td>
        </tr>
        <tr>
            <td>Url</td>
            <td><asp:TextBox Width="500" ID="UrlTextBox" runat="server" Text='<%# Bind("Url") %>' /></td>
        </tr>
        <tr>
            <td>Popis</td>
            <td><asp:TextBox Width="500" TextMode="MultiLine" ID="PopisTextBox" runat="server" Text='<%# Bind("Popis") %>' /></td>
        </tr>
        <tr>
            <td>Obsah</td>
            <td><asp:TextBox Width="500" Height="300" TextMode="MultiLine" ID="ObsahTextBox" runat="server" Text='<%# Bind("Obsah") %>' /></td>
        </tr>
    </table>
    <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" />
    &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
</EditItemTemplate>

Keď sa presunieme na konkrétny článok a pod ním klikneme na odkaz Edit, zobrazí sa nám vygenerovaný Editor článkov:

Editácia FormView v ASP.NET Web Forms - ASP.NET Web Forms

Formulár zatiaľ nepôjde odoslať, čo vyriešime zas v budúcej lekcii, Dokončenie editora článkov v ASP.NET . Dnešné zdrojové kódy nájdete v prílohe.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 277x (20.46 MB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Predchádzajúci článok
Výpis článkov z databázy v ASP.NET
Všetky články v sekcii
ASP.NET Web Forms
Preskočiť článok
(neodporúčame)
Dokončenie editora článkov v ASP.NET
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity