Megosztás a következőn keresztül:


A DataList szerkesztőfelületének (VB) testreszabása

által Scott Mitchell

PDF letöltése

Ebben az oktatóanyagban egy gazdagabb szerkesztőfelületet hozunk létre a DataListhez, amely tartalmazza a legördülő listákat és a jelölőnégyzeteket.

Bevezetés

A DataList jelölő és webes vezérlői EditItemTemplate határozzák meg a szerkeszthető felületet. Az eddig megvizsgált összes szerkeszthető DataList-példában a szerkeszthető felület TextBox Web-vezérlőkből állt. Az előző oktatóanyagban a szerkesztési idő felhasználói élményét az érvényesítési vezérlők hozzáadásával javítottuk.

Ez EditItemTemplate tovább bővíthető úgy, hogy a Szövegdoboztól eltérő webes vezérlőket is tartalmazzon, például legördülő listákat, radiobuttonlistákat, naptárakat stb. A TextBoxeshez hasonlóan a szerkesztőfelület más webes vezérlőkre való testreszabásakor is hajtsa végre a következő lépéseket:

  1. Adja hozzá a webvezérlőt a EditItemTemplate.
  2. A databinding szintaxissal rendelje hozzá a megfelelő adatmező értékét a megfelelő tulajdonsághoz.
  3. Az UpdateCommand eseménykezelőben programozottan érje el a Web-vezérlő értékét, és adja át a megfelelő BLL-metódusnak.

Ebben az oktatóanyagban egy gazdagabb szerkesztőfelületet hozunk létre a DataListhez, amely tartalmazza a legördülő listákat és a jelölőnégyzeteket. Létrehozunk egy DataListet, amely felsorolja a termékinformációkat, és lehetővé teszi a termék nevének, szállítójának, kategóriájának és megszűnt állapotának frissítését (lásd az 1. ábrát).

A szerkesztőfelület tartalmaz egy szövegdobozt, két legördülő listát és egy jelölőnégyzetet

1. ábra: A szerkesztőfelület tartalmaz egy szövegdobozt, két legördülő listát és egy jelölőnégyzetet (kattintással megtekintheti a teljes méretű képet)

1. lépés: Termékinformációk megjelenítése

Mielőtt létrehozhatnánk a DataList szerkeszthető felületét, először meg kell valósítanunk az írásvédett felületet. Először nyissa meg a CustomizedUI.aspx lapot a EditDeleteDataList mappából, és a Tervezőből vegyen fel egy DataListet a lapra, majd állítsa be a ID tulajdonságot Products értékre. A DataList intelligens címkéje alapján hozzon létre egy új ObjectDataSource-t. Nevezze el ezt az új ObjectDataSource-t ProductsDataSource , és konfigurálja úgy, hogy adatokat kérjen le az ProductsBLL osztály metódusából GetProducts . Az előző szerkeszthető DataList-oktatóanyagokhoz hasonlóan a szerkesztett termékinformációkat úgy frissítjük, hogy közvetlenül az üzleti logikai rétegre lépünk. Ennek megfelelően állítsa a legördülő listákat az UPDATE, INSERT és DELETE füleken a (Nincs) értékre.

Az UPDATE, INSERT és DELETE tabok Drop-Down listaelemeinek beállítása (Nincs)

2. ábra: Állítsa a FRISSÍTÉS, BESZÚRÁS és TÖRLÉS lap Drop-Down listákat (Nincs) értékre (Kattintson ide a teljes méretű kép megtekintéséhez)

Az ObjectDataSource konfigurálása után a Visual Studio létrehoz egy alapértelmezett értéket ItemTemplate a DataListhez, amely felsorolja az egyes visszaadott adatmezők nevét és értékét. Módosítsa úgy, ItemTemplate hogy a sablon egy <h4> elem terméknevét, valamint a kategória nevét, a szállító nevét, az árat és a megszűnt állapotot listázza. Ezenkívül adjon hozzá egy Szerkesztés gombot, és győződjön meg arról, hogy a CommandName tulajdonsága Szerkesztés értékre van állítva. A deklaratív jelölés a következő ItemTemplate :

<ItemTemplate>
    <h4>
        <asp:Label ID="ProductNameLabel" runat="server"
            Text='<%# Eval("ProductName") %>' />
    </h4>
    <table border="0">
        <tr>
            <td class="ProductPropertyLabel">Category:</td>
            <td class="ProductPropertyValue">
                <asp:Label ID="CategoryNameLabel" runat="server"
                    Text='<%# Eval("CategoryName") %>' />
            </td>
            <td class="ProductPropertyLabel">Supplier:</td>
            <td class="ProductPropertyValue">
                <asp:Label ID="SupplierNameLabel" runat="server"
                    Text='<%# Eval("SupplierName") %>' />
            </td>
        </tr>
        <tr>
            <td class="ProductPropertyLabel">Discontinued:</td>
            <td class="ProductPropertyValue">
                <asp:Label ID="DiscontinuedLabel" runat="server"
                    Text='<%# Eval("Discontinued") %>' />
            </td>
            <td class="ProductPropertyLabel">Price:</td>
            <td class="ProductPropertyValue">
                <asp:Label ID="UnitPriceLabel" runat="server"
                    Text='<%# Eval("UnitPrice", "{0:C}") %>' />
            </td>
        </tr>
        <tr>
            <td colspan="4">
                <asp:Button runat="Server" ID="EditButton"
                    Text="Edit" CommandName="Edit" />
            </td>
        </tr>
    </table>
    <br />
</ItemTemplate>

A fenti korrektúra a termékinformációkat <a termék nevének h4> fejlécével és a fennmaradó mezők négy oszlopával <table> határozza meg. ProductPropertyLabel és ProductPropertyValue CSS-osztályokat, amelyek a Styles.css-ban vannak definiálva, a korábbi oktatóanyagokban tárgyaltuk. A 3. ábra a böngészőn keresztüli megtekintéskor mutatja az előrehaladást.

Megjelenik az egyes termékek neve, szállítója, kategóriája, megszűnt állapota és ára

3. ábra: Megjelenik az egyes termékek neve, szállítója, kategóriája, megszűnt állapota és ára (ide kattintva megtekintheti a teljes méretű képet)

2. lépés: A webes vezérlők hozzáadása a szerkesztőfelülethez

A testre szabott DataList-szerkesztőfelület létrehozásának első lépése a szükséges webvezérlők hozzáadása a EditItemTemplate. Különösen szükségünk van egy legördülő listára a kategóriához, egy másikra a szállítóhoz, és egy jelölőnégyzetre a megszűnt állapothoz. Mivel a termék ára ebben a példában nem szerkeszthető, továbbra is megjeleníthetjük a Címke webvezérlővel.

A szerkesztőfelület testreszabásához kattintson a DataList intelligens címkéjének Sablonok szerkesztése hivatkozására, és válassza ki a legördülő listából a EditItemTemplate lehetőséget. Adjon hozzá egy legördülő listát a EditItemTemplate, és állítsa be a ID értékét Categories-ra.

Legördülő lista hozzáadása a kategóriákhoz

4. ábra: Legördülő lista hozzáadása a kategóriákhoz (ide kattintva megtekintheti a teljes méretű képet)

Ezután a DropDownList intelligens címkéje közül válassza az Adatforrás kiválasztása lehetőséget, és hozzon létre egy új ObjectDataSource nevű CategoriesDataSourceobjektumot. Konfigurálja az ObjectDataSource-t úgy, hogy a CategoriesBLL osztály GetCategories() metódusát használja (lásd az 5. ábrát). Ezután a DropDownList adatforrás-konfigurációs varázslója felszólít az egyes ListItem adatmezők és TextValue tulajdonságok kiválasztására. A Legördülő lista megjelenítse az CategoryName adatmezőt, és használja értékként CategoryID a 6. ábrán látható módon.

Új, CategoriesDataSource nevű ObjectDataSource létrehozása

5. ábra: Új ObjectDataSource névvel ellátott CategoriesDataSource objektum létrehozása (ide kattintva megtekintheti a teljes méretű képet)

A DropDownList megjelenítési és értékmezőinek konfigurálása

6. ábra: A DropDownList megjelenítési és értékmezőinek konfigurálása (ide kattintva megtekintheti a teljes méretű képet)

Ismételje meg ezt a lépéssorozatot, és hozzon létre egy legördülő listát a szállítók számára. Állítsa be a ID legördülő lista Suppliers értékét, és nevezze el az ObjectDataSource-t SuppliersDataSource.

A két legördülő lista hozzáadása után adjon hozzá egy jelölőnégyzetet a megszűnt állapothoz, és egy Szövegmezőt a termék nevéhez. Állítsa be a ID jelölőnégyzetet és a Discontinued szövegdobozt ProductName értékre, a megfelelő sorrendben. Adjon hozzá egy RequiredFieldValidatort, amely biztosítja, hogy a felhasználó értéket adjon a termék nevének.

Végül adja hozzá a Frissítés és a Mégse gombot. Ne feledje, hogy ehhez a két gombhoz elengedhetetlenül fontos, hogy a tulajdonságaik CommandName Frissítés és Mégse értékre legyenek állítva.

Nyugodtan helyezze el a szerkesztőfelületet tetszés szerint. Úgy döntöttem, hogy ugyanazt a négyoszlopos <table> elrendezést használom az írásvédett felületen, ahogy az alábbi deklaratív szintaxis és képernyőfelvétel szemlélteti:

<EditItemTemplate>
    <h4>
        <asp:Label ID="ProductNameLabel" runat="server"
            Text='<%# Eval("ProductName") %>' />
    </h4>
    <table border="0">
        <tr>
            <td class="ProductPropertyLabel">Name:</td>
            <td colspan="3" class="ProductPropertyValue">
                <asp:TextBox runat="server" ID="ProductName" Width="90%" />
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1"
                    ControlToValidate="ProductName"
                    ErrorMessage="You must enter a name for the product."
                    runat="server">*</asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td class="ProductPropertyLabel">Category:</td>
            <td class="ProductPropertyValue">
                <asp:DropDownList ID="Categories" runat="server"
                    DataSourceID="CategoriesDataSource"
                    DataTextField="CategoryName" DataValueField="CategoryID" />
            </td>
            <td class="ProductPropertyLabel">Supplier:</td>
            <td class="ProductPropertyValue">
                <asp:DropDownList ID="Suppliers"
                    DataSourceID="SuppliersDataSource" DataTextField="CompanyName"
                    DataValueField="SupplierID" runat="server" />
            </td>
        </tr>
        <tr>
            <td class="ProductPropertyLabel">Discontinued:</td>
            <td class="ProductPropertyValue">
                <asp:CheckBox runat="server" id="Discontinued" />
            </td>
            <td class="ProductPropertyLabel">Price:</td>
            <td class="ProductPropertyValue">
                <asp:Label ID="UnitPriceLabel" runat="server"
                    Text='<%# Eval("UnitPrice", "{0:C}") %>' />
            </td>
        </tr>
        <tr>
            <td colspan="4">
                <asp:Button runat="Server" ID="UpdateButton" CommandName="Update"
                    Text="Update" />
                 
                <asp:Button runat="Server" ID="CancelButton" CommandName="Cancel"
                    Text="Cancel" CausesValidation="False" />
            </td>
        </tr>
    </table>
    <br />
    <asp:ObjectDataSource ID="CategoriesDataSource" runat="server"
        OldValuesParameterFormatString="original_{0}" SelectMethod="GetCategories"
        TypeName="CategoriesBLL">
    </asp:ObjectDataSource>
    <asp:ObjectDataSource ID="SuppliersDataSource" runat="server"
        OldValuesParameterFormatString="original_{0}" SelectMethod="GetSuppliers"
        TypeName="SuppliersBLL">
    </asp:ObjectDataSource>
</EditItemTemplate>

A szerkesztőfelület a Read-Only felülethez hasonlóan van elrendezve

7. ábra: A szerkesztőfelület a Read-Only felülethez hasonlóan van elhelyezve (kattintson ide a teljes méretű kép megtekintéséhez)

3. lépés: Az EditCommand és a CancelCommand eseménykezelők létrehozása

Jelenleg nincs adatkötési szintaxis a EditItemTemplate-ban (kivéve a UnitPriceLabel-t, amelyet a ItemTemplate-ből szó szerint átmásoltak). A databinding szintaxist azonnal hozzáadjuk, de először hozzuk létre a DataList s és EditCommand események eseménykezelőitCancelCommand. Ne feledje, hogy az EditCommand eseménykezelő feladata annak a DataList-elemnek a szerkesztőfelületének renderelése, amelynek Szerkesztés gombjára kattintott, míg a CancelCommand feladat a DataList előzetes szerkesztési állapotba való visszaírása.

Hozza létre ezt a két eseménykezelőt, és használja a következő kódot:

Protected Sub Products_EditCommand(source As Object, e As DataListCommandEventArgs) _
    Handles Products.EditCommand
    ' Set the DataList's EditItemIndex property to the
    ' index of the DataListItem that was clicked
    Products.EditItemIndex = e.Item.ItemIndex
    ' Rebind the data to the DataList
    Products.DataBind()
End Sub
Protected Sub Products_CancelCommand(source As Object, e As DataListCommandEventArgs) _
    Handles Products.CancelCommand
    ' Set the DataList's EditItemIndex property to -1
    Products.EditItemIndex = -1
    ' Rebind the data to the DataList
    Products.DataBind()
End Sub

E két eseménykezelő beállítása után a Szerkesztés gombra kattintva megjelenik a szerkesztőfelület, és a Mégse gombra kattintva a szerkesztett elem visszavált az írásvédett módra. A 8. ábrán a DataList látható, miután a Szerkesztés gombra kattintott a Chef Anton s Gumbo Mixhez. Mivel még nem vettünk fel adatkötési szintaxist a szerkesztőfelületre, a ProductName Szövegdoboz üres, a Discontinued jelölőnégyzet nincs bejelölve, és az első elemek a CategoriesSuppliers legördülő listából lettek kiválasztva.

Képernyőkép a DataList EditItemTemplate-ról az EditCommand és a CancelCommand eseménykezelők hozzáadása és a Szerkesztés gomb kiválasztása után.

8. ábra: A Szerkesztés gombra kattintva megjeleníti a szerkesztőfelületet (ide kattintva megtekintheti a teljes méretű képet)

4. lépés: A DataBinding szintaxis hozzáadása a szerkesztőfelülethez

Ahhoz, hogy a szerkesztőfelület megjelenítse az aktuális termékértékeket, adatkötési szintaxissal kell hozzárendelnünk az adatmezőértékeket a megfelelő webvezérlő értékekhez. Az adatkötés szintaxisa a Tervezőn keresztül alkalmazható a Sablonok szerkesztése képernyőre lépve, és a Webvezérlők intelligens címkéi között válassza a DataBindings szerkesztése hivatkozást. Másik lehetőségként az adatkötés szintaxisa közvetlenül hozzáadható a deklaratív korrektúrajelhez.

Rendelje hozzá az ProductName adatmező értékét a ProductName TextBox Text tulajdonságához, a CategoryID és SupplierID adatmező értékeit az Categories és Suppliers DropDownList SelectedValue tulajdonságaihoz, az Discontinued adatmező értékét pedig a Discontinued Jelölőnégyzet Checked tulajdonságához. Miután végrehajtotta ezeket a módosításokat, akár a Tervezőn keresztül, akár közvetlenül a deklaratív korrektúra használatával, tekintse meg újra az oldalt egy böngészőben, és kattintson a Chef Anton s Gumbo Mix Szerkesztés gombjára. Ahogy a 9. ábra mutatja, az adatkötés szintaxisa hozzáadta az aktuális értékeket a Szövegdoboz, a Legördülő listák és a Jelölőnégyzet mezőhöz.

Képernyőkép a DataList EditItemTemplate-ról a DataBinding szintaxis hozzáadása és a Szerkesztés gomb kiválasztása után.

9. ábra: A Szerkesztés gombra kattintva megjeleníti a szerkesztőfelületet (ide kattintva megtekintheti a teljes méretű képet)

5. lépés: A felhasználó módosításainak mentése az UpdateCommand eseménykezelőben

Amikor a felhasználó szerkeszt egy terméket, és a Frissítés gombra kattint, visszaadás történik, és a DataList UpdateCommand eseménye aktiválódik. Az eseménykezelőben be kell olvasnunk a webes vezérlők EditItemTemplate értékeit, majd kapcsolatot kell létesítenünk a BLL-lel, hogy frissítsük a terméket az adatbázisban. Ahogy a korábbi oktatóanyagokban láttuk, a ProductID frissített termék elérhető a DataKeys gyűjteményen keresztül. A felhasználó által megadott mezőket úgy érheti el, hogy programozott módon hivatkozik a webes vezérlőkre FindControl("controlID")a következő kód szerint:

Protected Sub Products_UpdateCommand(source As Object, e As DataListCommandEventArgs) _
    Handles Products.UpdateCommand
    If Not Page.IsValid Then
        Exit Sub
    End If
    ' Read in the ProductID from the DataKeys collection
    Dim productID As Integer = Convert.ToInt32(Products.DataKeys(e.Item.ItemIndex))
    ' Read in the product name and price values
    Dim productName As TextBox = CType(e.Item.FindControl("ProductName"), TextBox)
    Dim categories As DropDownList=CType(e.Item.FindControl("Categories"), DropDownList)
    Dim suppliers As DropDownList = CType(e.Item.FindControl("Suppliers"), DropDownList)
    Dim discontinued As CheckBox = CType(e.Item.FindControl("Discontinued"), CheckBox)
    Dim productNameValue As String = Nothing
    If productName.Text.Trim().Length > 0 Then
        productNameValue = productName.Text.Trim()
    End If
    Dim categoryIDValue As Integer = Convert.ToInt32(categories.SelectedValue)
    Dim supplierIDValue As Integer = Convert.ToInt32(suppliers.SelectedValue)
    Dim discontinuedValue As Boolean = discontinued.Checked
    ' Call the ProductsBLL's UpdateProduct method...
    Dim productsAPI As New ProductsBLL()
    productsAPI.UpdateProduct(productNameValue, categoryIDValue, supplierIDValue, _
        discontinuedValue, productID)
    ' Revert the DataList back to its pre-editing state
    Products.EditItemIndex = -1
    Products.DataBind()
End Sub

A kód úgy indul, hogy meghívja a Page.IsValid tulajdonságot annak biztosítására, hogy az oldalon található összes érvényesítési vezérlő elem helyesen működjön. Ha a Page.IsValidTrue, a szerkesztett termék ProductID értékét a rendszer a DataKeys gyűjteményből olvassa be, és az adatbevitel webes vezérlőit EditItemTemplate programozottan hivatkozza. Ezután a webvezérlők értékei olyan változókba lesznek beolvasva, amelyek aztán a megfelelő UpdateProduct túlterhelésbe kerülnek. Az adatok frissítése után a DataList visszakerül a szerkesztés előtti állapotába.

Megjegyzés:

Kihagytam a BLL- és DAL-Level Kivételek kezelése oktatóanyagban hozzáadott kivételkezelési logikát a kód és a példa összpontosítása érdekében. Gyakorlatként adja hozzá ezt a funkciót az oktatóanyag elvégzése után.

6. lépés: NULL CategoryID és SupplierID értékek kezelése

A Northwind-adatbázis lehetővé teszi a NULL értékeket az Products tábla CategoryID és SupplierID oszlopaiban. A szerkesztőfelület azonban jelenleg nem fogad el NULL értékeket. Ha olyan terméket próbálunk szerkeszteni, amely NULL vagy annak CategoryID vagy SupplierID oszlopainak értékét tartalmazza, a következőhöz hasonló hibaüzenet jelenik meg ArgumentOutOfRangeException : "Kategóriák" egy SelectedValue értékkel rendelkezik, amely érvénytelen, mert nem szerepel az elemek listájában. Emellett jelenleg nem lehet egy termékkategóriát vagy szállítói értéket nem értékrőlNULL egyre NULL módosítani.

A kategória és szállító legördülő listák értékeinek támogatásához egy további NULL értéket kell hozzáadnunk ListItem. Úgy döntöttem, hogy a (Nincs) értéket fogom használni ezen Text értékeként, de megváltoztathatod valami másra (például egy üres karakterláncra), ha szeretnéd. Végül ne felejtse el beállítani a DropDownLists-t a AppendDataBoundItems-re; ha elfelejti ezt megtenni, a DropDownListhez kapcsolódó kategóriák és szállítók felül fogják írni a statikusan hozzáadott True-t.

A módosítások elvégzése után a DataList s legördülő listáinak a következőhöz hasonlóan kell kinézniük EditItemTemplate :

<asp:DropDownList ID="Categories" DataSourceID="CategoriesDataSource"
    DataTextField="CategoryName" DataValueField="CategoryID"  runat="server"
    SelectedValue='<%# Eval("CategoryID") %>' AppendDataBoundItems="True">
    <asp:ListItem Value=" Selected="True">(None)</asp:ListItem>
</asp:DropDownList>
...
<asp:DropDownList ID="Suppliers" DataSourceID="SuppliersDataSource"
    DataTextField="CompanyName" DataValueField="SupplierID" runat="server"
    SelectedValue='<%# Eval("SupplierID") %>' AppendDataBoundItems="True">
    <asp:ListItem Value=" Selected="True">(None)</asp:ListItem>
</asp:DropDownList>

Megjegyzés:

Statikus ListItem s-eket a Tervezőn vagy közvetlenül a deklaratív szintaxison keresztül adhat hozzá a DropDownListhez. Amikor dropDownList-elemet ad hozzá az adatbázis NULL értékének megjelenítéséhez, mindenképpen adja hozzá a ListItem deklaratív szintaxison keresztül. Ha a Tervezőben a ListItem Gyűjteményszerkesztőt használja, a létrehozott deklaratív szintaxis teljesen kihagyja a Value beállítást, amikor egy üres sztringet rendel hozzá, és deklaratív korrektúrát hoz létre, például: <asp:ListItem>(None)</asp:ListItem>. Bár ez ártalmatlannak tűnhet, a hiányzó Value érték miatt a DropDownList a helyén használja a Text tulajdonságértéket. Ez azt jelenti, hogy ha ez NULLListItem ki van választva, a rendszer megkísérli hozzárendelni a (Nincs) értéket a termékadatmezőhöz (CategoryID vagy SupplierIDebben az oktatóanyagban), ami kivételt eredményez. Explicit beállítással Value=""egy NULL érték lesz hozzárendelve a termékadatmezőhöz a NULLListItem kijelöléskor.

Szánjon egy kis időt a haladás megtekintésére egy böngészőben. Ha szerkeszt egy terméket, vegye figyelembe, hogy a Categories és Suppliers legördülő listák elején van egy (Nincs) lehetőség.

A Kategóriák és szállítók legördülő listák tartalmazzák a (Nincs) lehetőséget

10. ábra: A CategoriesSuppliers legördülő listák tartalmazzák a (Nincs) lehetőséget (ide kattintva megtekintheti a teljes méretű képet)

A (Nincs) beállítás adatbázis-értékként NULL való mentéséhez vissza kell térnünk az UpdateCommand eseménykezelőhöz. Módosítsa a categoryIDValue és supplierIDValue változókat nullázható egész számokká, és rendeljen hozzájuk értéket, ami nem Nothing, csak akkor, ha a DropDownList SelectedValue nem üres sztring.

Dim categoryIDValue As Nullable(Of Integer) = Nothing
If Not String.IsNullOrEmpty(categories.SelectedValue) Then
    categoryIDValue = Convert.ToInt32(categories.SelectedValue)
End If
Dim supplierIDValue As Nullable(Of Integer) = Nothing
If Not String.IsNullOrEmpty(suppliers.SelectedValue) Then
    supplierIDValue = Convert.ToInt32(suppliers.SelectedValue)
End If

Ezzel a módosítással egy érték Nothing lesz átadva a UpdateProduct BLL-metódusnak, ha a felhasználó a (Nincs) lehetőséget választotta valamelyik legördülő listából, amely egy NULL adatbázis-értéknek felel meg.

Összefoglalás

Ebben az oktatóanyagban egy összetettebb DataList-szerkesztőfelületet hoztunk létre, amely három különböző beviteli webvezérlőt tartalmazott, egy TextBoxot, két DropDownList-et és egy jelölőnégyzetet az érvényesítési vezérlőkkel együtt. A szerkesztőfelület létrehozásakor a lépések ugyanazok, függetlenül a használt webes vezérlőktől: először adja hozzá a webvezérlőket a DataList s-hez EditItemTemplate; használja a databinding szintaxist a megfelelő adatmezőértékek hozzárendeléséhez a megfelelő webvezérlő tulajdonságaival; és az eseménykezelőben UpdateCommand programozott módon hozzáférjen a webes vezérlőkhöz és azok megfelelő tulajdonságaihoz, adja át az értékeiket a BLL-be.

Szerkesztőfelület létrehozásakor , akár csak TextBoxokból vagy különböző webvezérlők gyűjteményéből áll, ügyeljen arra, hogy megfelelően kezelje az adatbázis-értékeket NULL . Az NULL számvitelében elengedhetetlen, hogy ne csak helyesen jelenítsen meg egy meglévő NULL értéket a szerkesztőfelületen, hanem arra is kínáljon megoldást, hogy egy értéket NULL jelölhessen. A DataLists DropDownListjei esetében ez általában azt jelenti, hogy hozzáadunk egy statikus ListItem elemet, amelynek Value tulajdonsága explicit módon üres sztringre van állítva (Value=""), és hozzáadunk egy kis kódot az UpdateCommand eseménykezelőhöz, annak érdekében, hogy megállapítsuk, a NULL``ListItem ki van-e választva.

Boldog programozást!

Tudnivalók a szerzőről

Scott Mitchell, hét ASP/ASP.NET-könyv szerzője és a 4GuysFromRolla.com alapítója, 1998 óta dolgozik a Microsoft webtechnológiáival. Scott független tanácsadóként, edzőként és íróként dolgozik. Legújabb könyve Sams Teach Yourself ASP.NET 2.0 24 óra alatt. Itt érhető el mitchell@4GuysFromRolla.com.

Külön köszönet

Ezt az oktatóanyag-sorozatot sok hasznos véleményező áttekintette. Az oktatóanyag vezető véleményezői Dennis Patterson, David Suru és Randy Schmidt voltak. Szeretné áttekinteni a közelgő MSDN-cikkeimet? Ha igen, írj egy sort a mitchell@4GuysFromRolla.com-ra.