Vytvoření rozhraní pro výběr jednoho uživatelského účtu z mnoha (VB)
V tomto kurzu vytvoříme uživatelské rozhraní se stránkovanou filtrovatelnou mřížkou. Konkrétně se naše uživatelské rozhraní bude skládat z řady LinkButtons pro filtrování výsledků na základě počátečního písmene uživatelského jména a ovládacího prvku GridView pro zobrazení odpovídajících uživatelů. Začneme výpisem všech uživatelských účtů v objektu GridView. Potom v kroku 3 přidáme filtr LinkButtons. Krok 4 se podívá na stránkování filtrovaných výsledků. Rozhraní vytvořené v krocích 2 až 4 se použije v následujících kurzech k provádění úloh správy pro konkrétní uživatelský účet.
Úvod
V kurzu Přiřazování rolí uživatelům jsme vytvořili základní rozhraní, které umožňuje správci vybrat uživatele a spravovat jeho role. Konkrétně rozhraní zobrazilo správci rozevírací seznam všech uživatelů. Takové rozhraní je vhodné, když existuje jen tucet nebo tak uživatelských účtů, ale je nepraké pro weby se stovkami nebo tisíci účtů. Stránkovaná filtrovatelná mřížka je vhodnější uživatelské rozhraní pro weby s rozsáhlými uživatelskými základnami.
V tomto kurzu vytvoříme takové uživatelské rozhraní. Konkrétně se naše uživatelské rozhraní bude skládat z řady LinkButtons pro filtrování výsledků na základě počátečního písmene uživatelského jména a ovládacího prvku GridView pro zobrazení odpovídajících uživatelů. Začneme výpisem všech uživatelských účtů v objektu GridView. Potom v kroku 3 přidáme filtr LinkButtons. Krok 4 se podívá na stránkování filtrovaných výsledků. Rozhraní vytvořené v krocích 2 až 4 se použije v následujících kurzech k provádění úloh správy pro konkrétní uživatelský účet.
Pusťme se do toho.
Krok 1: Přidání nových stránek ASP.NET
V tomto kurzu a v dalších dvou se budeme zabývat různými funkcemi a možnostmi souvisejícími se správou. K implementaci témat prozkoumaných v rámci těchto kurzů budeme potřebovat řadu ASP.NET stránek. Pojďme tyto stránky vytvořit a aktualizovat mapu webu.
Začněte vytvořením nové složky v projektu s názvem Administration
. Dále do složky přidejte dvě nové ASP.NET stránky, které propojí každou stránku se stránkou Site.master
předlohy. Pojmenujte stránky:
ManageUsers.aspx
UserInformation.aspx
Přidejte také dvě stránky do kořenového adresáře webu: ChangePassword.aspx
a RecoverPassword.aspx
.
Tyto čtyři stránky by teď měly mít dva ovládací prvky Obsahu, jeden pro každý ContentPlaceHolders stránky předlohy: MainContent
a LoginContent
.
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="LoginContent" Runat="Server">
</asp:Content>
Chceme zobrazit výchozí značky stránky předlohy pro LoginContent
ContentPlaceHolder pro tyto stránky. Proto odeberte deklarativní kód pro Content2
ovládací prvek Obsahu. Až to uděláte, značky stránek by měly obsahovat jenom jeden ovládací prvek Obsahu.
Stránky ASP.NET ve Administration
složce jsou určené výhradně pro správce. V kurzu Vytváření a správa rolí jsme do systému přidali roli Administrators. Omezíme přístup k těmto dvěma stránkám na tuto roli. Toho dosáhnete tak, že do Administration
složky přidáte Web.config
soubor a nakonfigurujete jeho <authorization>
prvek tak, aby povolovala uživatele s rolí Administrators a odepře všechny ostatní.
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrators" />
<deny users="*"/>
</authorization>
</system.web>
</configuration>
V tuto chvíli by Průzkumník řešení vašeho projektu měly vypadat podobně jako na obrázku 1.
Obrázek 1: Na web byly přidány čtyři nové stránky a Web.config
soubor (kliknutím zobrazíte obrázek v plné velikosti)
Nakonec aktualizujte mapu webu (Web.sitemap
) tak, aby obsahovala položku na ManageUsers.aspx
stránce. Za kód XML, který <siteMapNode>
jsme přidali pro kurzy rolí, přidejte následující kód XML.
<siteMapNode title="User Administration" url="~/Administration/ManageUsers.aspx"/>
Když je mapa webu aktualizovaná, navštivte web prostřednictvím prohlížeče. Jak je znázorněno na obrázku 2, navigace na levé straně teď obsahuje položky pro kurzy pro správu.
Obrázek 2: Mapa webu obsahuje uzel s názvem Správa uživatelů (kliknutím zobrazíte obrázek v plné velikosti)
Krok 2: Výpis všech uživatelských účtů v GridView
Naším konečným cílem tohoto kurzu je vytvořit stránkovanou, filtrovatelnou mřížku, prostřednictvím které může správce vybrat uživatelský účet, který bude spravovat. Začněme výpisem všech uživatelů v zobrazení GridView. Po dokončení přidáme rozhraní a funkce filtrování a stránkování.
ManageUsers.aspx
Otevřete stránku ve Administration
složce a přidejte GridView s nastavením ID
na UserAccounts
hodnotu Za chvíli napíšeme kód pro vytvoření vazby sady uživatelských účtů na GridView pomocí Membership
metody třídy GetAllUsers
. Jak je popsáno v předchozích kurzech, GetAllUsers
metoda vrací MembershipUserCollection
objekt, což je kolekce MembershipUser
objektů. Každý MembershipUser
v kolekci obsahuje vlastnosti, jako jsou UserName
, Email
IsApproved
, a tak dále.
Chcete-li zobrazit informace o požadovaném uživatelském účtu v objektu GridView, nastavte vlastnost GridView AutoGenerateColumns
na hodnotu False a přidejte BoundFields pro UserName
vlastnosti , Email
a Comment
a a CheckBoxFields pro IsApproved
vlastnosti , IsLockedOut
a IsOnline
. Tuto konfiguraci lze použít prostřednictvím deklarativního kódu ovládacího prvku nebo prostřednictvím dialogového okna Pole. Obrázek 3 ukazuje snímek obrazovky dialogového okna Pole po zrušení zaškrtnutí políčka Automaticky generovat pole a přidání a konfigurace BoundFields a CheckBoxFields.
Obrázek 3: Přidání tří vázaných polí a tří polí CheckBoxField do objektu GridView (kliknutím zobrazíte obrázek v plné velikosti)
Po nakonfigurování objektu GridView se ujistěte, že jeho deklarativní kód vypadá takto:
<asp:GridView ID="UserAccounts" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="UserName" HeaderText="UserName" />
<asp:BoundField DataField="Email" HeaderText="Email" />
<asp:CheckBoxField DataField="IsApproved" HeaderText="Approved?" />
<asp:CheckBoxField DataField="IsLockedOut" HeaderText="Locked Out?" />
<asp:CheckBoxField DataField="IsOnline" HeaderText="Online?" />
<asp:BoundField DataField="Comment" HeaderText="Comment" />
</Columns>
</asp:GridView>
Dále musíme napsat kód, který sváže uživatelské účty s objektem GridView. Vytvořte metodu s názvem , BindUserAccounts
která provede tuto úlohu, a pak ji zavolejte z obslužné Page_Load
rutiny události při první návštěvě stránky.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
BindUserAccounts()
End If
End Sub
Private Sub BindUserAccounts()
UserAccounts.DataSource = Membership.GetAllUsers()
UserAccounts.DataBind()
End Sub
Chvíli si stránku otestujte v prohlížeči. Jak ukazuje obrázek 4, UserAccounts
GridView uvádí uživatelské jméno, e-mailovou adresu a další relevantní informace o účtu pro všechny uživatele v systému.
Obrázek 4: Uživatelské účty jsou uvedené v zobrazení GridView (kliknutím zobrazíte obrázek v plné velikosti)
Krok 3: Filtrování výsledků podle prvního písmena uživatelského jména
UserAccounts
V současné době GridView zobrazuje všechny uživatelské účty. Pro weby se stovkami nebo tisíci uživatelských účtů je nezbytné, aby uživatel mohl rychle analyzovat zobrazené účty. Toho lze dosáhnout přidáním filtrování LinkButtons na stránku. Pojďme na stránku přidat 27 tlačítek LinkButton: jedno s názvem Vše a jedním LinkButton pro každé písmeno abecedy. Pokud návštěvník klikne na tlačítko All LinkButton, GridView zobrazí všechny uživatele. Pokud uživatel klikne na určité písmeno, zobrazí se jenom uživatelé, jejichž uživatelské jméno začíná vybraným písmenem.
Naším prvním úkolem je přidat 27 ovládacích prvků LinkButton. Jednou z možností je vytvořit 27 LinkButtons deklarativně, jeden po druhém. Flexibilnější přístup je použití ovládacího prvku Repeater s objektem ItemTemplate
, který vykreslí LinkButton a pak vytvoří vazbu možností filtrování na repeater jako pole String
.
Začněte přidáním ovládacího prvku Repeater na stránku nad UserAccounts
GridView. Nastavte vlastnost Repeater ID
na FilteringUI
Konfigurovat šablony repeateru tak, aby vykreslovala ItemTemplate
LinkButton, jejíž Text
vlastnosti a CommandName
jsou vázány k aktuálnímu prvku pole. Jak jsme viděli v kurzu Přiřazování rolí uživatelům, můžete toho dosáhnout pomocí Container.DataItem
syntaxe datové vazby. Pomocí opakovače SeparatorTemplate
zobrazíte svislou čáru mezi jednotlivými odkazy.
<asp:Repeater ID="FilteringUI" runat="server">
<ItemTemplate>
<asp:LinkButton runat="server" ID="lnkFilter"
Text='<%# Container.DataItem %>'
CommandName='<%# Container.DataItem %>'></asp:LinkButton>
</ItemTemplate>
<SeparatorTemplate>|</SeparatorTemplate>
</asp:Repeater>
Pokud chcete tento opakovač naplnit požadovanými možnostmi filtrování, vytvořte metodu s názvem BindFilteringUI
. Nezapomeňte tuto metodu volat z obslužné Page_Load
rutiny události při načtení první stránky.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
BindUserAccounts()
BindFilteringUI()
End If
End Sub
Private Sub BindFilteringUI()
Dim filterOptions() As String = {"All", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
FilteringUI.DataSource = filterOptions
FilteringUI.DataBind()
End Sub
Tato metoda určuje možnosti filtrování jako prvky v String
poli filterOptions
Pro každý prvek v poli repeater vykresluje LinkButton s jeho Text
vlastnostmi a CommandName
přiřazenými k hodnotě prvku pole.
Obrázek 5 znázorňuje ManageUsers.aspx
stránku při prohlížení v prohlížeči.
Obrázek 5: Repeater list 27 Filtering LinkButtons (Kliknutím zobrazíte obrázek v plné velikosti)
Poznámka
Uživatelská jména můžou začínat libovolným znakem, včetně čísel a interpunkce. Aby správce mohl tyto účty zobrazit, bude muset použít možnost All LinkButton (Všechny odkazy). Alternativně můžete přidat LinkButton, který vrátí všechny uživatelské účty, které začínají číslem. Nechávám to jako cvičení pro čtenáře.
Kliknutí na některé z filtrovaných tlačítek LinkButton způsobí zpětné odeslání a vyvolá událost Repeater ItemCommand
, ale v mřížce nedojde k žádné změně, protože jsme zatím nenapsali žádný kód pro filtrování výsledků. Třída Membership
obsahuje metoduFindUsersByName
, která vrací ty uživatelské účty, jejichž uživatelské jméno odpovídá zadanému vzoru vyhledávání. Tuto metodu můžeme použít k načtení pouze těch uživatelských účtů, jejichž uživatelská jména začínají písmenem určeným CommandName
filtrovaným tlačítkem LinkButton, na který jste klikli.
Začněte aktualizací třídy kódu na ManageUser.aspx
pozadí stránky tak, aby obsahovala vlastnost s názvem UsernameToMatch
Tato vlastnost zachová řetězec filtru uživatelského jména napříč zpětnými operacemi:
Private Property UsernameToMatch() As String
Get
Dim o As Object = ViewState("UsernameToMatch")
If o Is Nothing Then
Return String.Empty
Else
Return o.ToString()
End If
End Get
Set(ByVal Value As String)
ViewState("UsernameToMatch") = Value
End Set
End Property
Vlastnost UsernameToMatch
ukládá svou hodnotu, kterou je přiřazena ViewState
do kolekce pomocí klíče UsernameToMatch. Když se hodnota této vlastnosti načte, zkontroluje, jestli v ViewState
kolekci existuje hodnota. Pokud ne, vrátí výchozí hodnotu, prázdný řetězec. Vlastnost UsernameToMatch
vykazuje běžný vzor, konkrétně zachování hodnoty pro zobrazení stavu tak, aby všechny změny vlastnosti byly zachovány napříč postbacky. Další informace o tomto modelu najdete v tématu Vysvětlení stavu zobrazení ASP.NET.
Dále aktualizujte metodu BindUserAccounts
tak, aby místo volání Membership.GetAllUsers
volala Membership.FindUsersByName
a předávala hodnotu UsernameToMatch
vlastnosti připojené se zástupným znakem SQL %.
Private Sub BindUserAccounts()
UserAccounts.DataSource = Membership.FindUsersByName(Me.UsernameToMatch &"%")
UserAccounts.DataBind()
End Sub
Pokud chcete zobrazit jenom ty uživatele, jejichž uživatelské jméno začíná písmenem A, nastavte UsernameToMatch
vlastnost na A a pak zavolejte BindUserAccounts
: Výsledkem bude volání Membership.FindUsersByName("A%")
, které vrátí všechny uživatele, jejichž uživatelské jméno začíná na A. Podobně, chcete-li vrátit všechny uživatele, přiřaďte k vlastnosti prázdný řetězec UsernameToMatch
tak, aby BindUserAccounts
metoda vyvolala Membership.FindUsersByName("%")
a tím vrátila všechny uživatelské účty.
Vytvořte obslužnou rutinu události repeateru ItemCommand
. Tato událost je vyvolána při každém kliknutí na jeden z filtrů LinkButtons; je předána hodnota clicked LinkButton prostřednictvím CommandName
objektu RepeaterCommandEventArgs
. Musíme přiřadit odpovídající hodnotu vlastnosti UsernameToMatch
a pak volat metodu BindUserAccounts
. Pokud je hodnota CommandName
Vše, přiřaďte prázdný řetězec, UsernameToMatch
aby se zobrazily všechny uživatelské účty. V opačném případě přiřaďte CommandName
hodnotu UsernameToMatch
Protected Sub FilteringUI_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles FilteringUI.ItemCommand
If e.CommandName = "All" Then
Me.UsernameToMatch = String.Empty
Else
Me.UsernameToMatch = e.CommandName
End If
BindUserAccounts()
End Sub
S tímto kódem otestujte funkci filtrování. Při první návštěvě stránky se zobrazí všechny uživatelské účty (podívejte se zpět na obrázek 5). Kliknutím na tlačítko A LinkButton dojde k zpětnému odeslání a vyfiltruje výsledky a zobrazí se pouze ty uživatelské účty, které začínají na A .
Obrázek 6: Pomocí tlačítka Odkaz pro filtrování zobrazíte uživatele, jejichž uživatelské jméno začíná určitým písmenem (kliknutím zobrazíte obrázek v plné velikosti).
Krok 4: Aktualizace objektu GridView na použití stránkování
Objekt GridView zobrazený na obrázcích 5 a 6 obsahuje seznam všech záznamů vrácených metodou FindUsersByName
. Pokud existují stovky nebo tisíce uživatelských účtů, může to vést k přetížení informací při prohlížení všech účtů (jako je tomu při kliknutí na tlačítko Všechny odkazy nebo při počáteční návštěvě stránky). Abychom pomohli prezentovat uživatelské účty v lépe spravovatelných blocích, nakonfigurujeme GridView tak, aby zobrazoval 10 uživatelských účtů najednou.
Ovládací prvek GridView nabízí dva typy stránkování:
- Výchozí stránkování – snadno se implementuje, ale neefektivní. Stručně řečeno, s výchozím stránkováním GridView očekává všechny záznamy ze svého zdroje dat. Pak se zobrazí pouze příslušná stránka záznamů.
- Vlastní stránkování – implementace vyžaduje více práce, ale je efektivnější než výchozí stránkování, protože při vlastním stránkování zdroj dat vrací pouze přesnou sadu záznamů, které se mají zobrazit.
Rozdíl ve výkonu mezi výchozím a vlastním stránkováním může být při stránkování tisíců záznamů poměrně značný. Vzhledem k tomu, že toto rozhraní vytváříme za předpokladu, že existují stovky nebo tisíce uživatelských účtů, použijeme vlastní stránkování.
Poznámka
Podrobnější diskuzi o rozdílech mezi výchozím a vlastním stránkováním a také o problémech souvisejících s implementací vlastního stránkování najdete v tématu Efektivní stránkování prostřednictvím velkých objemů dat. Analýzu rozdílu ve výkonu mezi výchozím a vlastním stránkováním najdete v tématu Vlastní stránkování v ASP.NET s SQL Server 2005.
K implementaci vlastního stránkování potřebujeme nejprve nějaký mechanismus, kterým načteme přesnou podmnožinu záznamů zobrazených objektem GridView. Dobrou zprávou je, že Membership
metoda třídy FindUsersByName
má přetížení, které nám umožňuje určit index stránky a velikost stránky a vrací pouze ty uživatelské účty, které spadají do tohoto rozsahu záznamů.
Toto přetížení má zejména následující podpis: FindUsersByName(usernameToMatch, pageIndex, pageSize, totalRecords)
.
Parametr pageIndex určuje stránku uživatelských účtů, které se mají vrátit; pageSize označuje, kolik záznamů se má zobrazit na stránce. Parametr totalRecords je ByRef
parametr, který vrací celkový počet uživatelských účtů v úložišti uživatelů.
Poznámka
Data vrácená uživatelem FindUsersByName
jsou seřazena podle uživatelského jména. Kritéria řazení nelze přizpůsobit.
Objekt GridView lze nakonfigurovat tak, aby využíval vlastní stránkování, ale pouze v případě, že je vázán na ovládací prvek ObjectDataSource. Pro ObjectDataSource ovládací prvek implementovat vlastní stránkování, vyžaduje dvě metody: jednu, která je předána počáteční řádek index a maximální počet záznamů k zobrazení, a vrací přesné podmnožiny záznamů, které spadají do tohoto rozsahu; a metodu, která vrací celkový počet stránkovaných záznamů. Přetížení FindUsersByName
přijímá index stránky a velikost stránky a vrací celkový počet záznamů prostřednictvím parametru ByRef
. Tady tedy dochází k neshodě rozhraní.
Jednou z možností by bylo vytvořit třídu proxy, která zpřístupňuje rozhraní ObjectDataSource očekává a pak interně volá metodu FindUsersByName
. Další možností – a tou, kterou použijeme pro tento článek – je vytvořit vlastní stránkovací rozhraní a použít ho místo integrovaného stránkovacího rozhraní GridView.
Vytvoření prvního, předchozího, dalšího, posledního stránkovacího rozhraní
Pojďme vytvořit stránkovací rozhraní pomocí funkcí First, Previous, Next a Last LinkButtons. První tlačítko odkazu po kliknutí uživatele přemísťuje na první stránku dat, zatímco funkce Previous ho vrátí na předchozí stránku. Podobně, Next a Last přesunou uživatele na další a poslední stránku v uvedeném pořadí. Přidejte čtyři ovládací prvky LinkButton pod UserAccounts
GridView.
<p>
<asp:LinkButton ID="lnkFirst" runat="server"> First</asp:LinkButton> |
<asp:LinkButton ID="lnkPrev" runat="server"> Prev</asp:LinkButton> |
<asp:LinkButton ID="lnkNext" runat="server">Next </asp:LinkButton> |
<asp:LinkButton ID="lnkLast" runat="server">Last </asp:LinkButton>
</p>
Dále vytvořte obslužnou rutinu události pro každou událost LinkButton Click
.
Obrázek 7 znázorňuje čtyři tlačítka LinkButton při zobrazení návrhu visual web developer.
Obrázek 7: Přidat první, předchozí, další a poslední tlačítko odkazu pod GridView (kliknutím zobrazíte obrázek v plné velikosti)
Sledování indexu aktuální stránky
Když uživatel poprvé navštíví ManageUsers.aspx
stránku nebo klikne na jedno z tlačítek filtrování, chceme zobrazit první stránku dat v zobrazení GridView. Když uživatel klikne na jedno z navigačních tlačítek LinkButtons, musíme aktualizovat index stránky. Pokud chcete zachovat index stránky a počet záznamů, které se mají zobrazit na stránce, přidejte do třídy kódu stránky následující dvě vlastnosti:
Private Property PageIndex() As Integer
Get
Dim o As Object = ViewState("PageIndex")
If o Is Nothing Then
Return 0
Else
Return Convert.ToInt32(o)
End If
End Get
Set(ByVal Value As Integer)
ViewState("PageIndex") = Value
End Set
End Property
Private ReadOnly Property PageSize() As Integer
Get
Return 10
End Get
End Property
Stejně jako vlastnost UsernameToMatch
PageIndex
vlastnost uchovává svou hodnotu pro zobrazení stavu. Vlastnost jen pro PageSize
čtení vrátí pevně zakódovanou hodnotu 10. Zvu čtenáře, který má zájem, aby aktualizoval tuto vlastnost tak, aby používal stejný vzor jako PageIndex
, a pak stránku rozšířil ManageUsers.aspx
tak, aby uživatel, který stránku navštíví, mohl určit, kolik uživatelských účtů se má zobrazit na stránce.
Načítání pouze záznamů aktuální stránky, aktualizace indexu stránky a povolení a zakázání linkových tlačítek stránkovacího rozhraní
S použitím stránkovacího rozhraní a PageIndex
přidanými vlastnostmi a PageSize
jsme připraveni aktualizovat metodu BindUserAccounts
tak, aby používala příslušné FindUsersByName
přetížení. Kromě toho musíme tuto metodu povolit nebo zakázat stránkovací rozhraní v závislosti na tom, jaká stránka se zobrazuje. Při prohlížení první stránky dat, první a předchozí odkazy by měly být zakázány; Při prohlížení poslední stránky by měly být zakázány další a poslední.
Aktualizujte metodu BindUserAccounts
následujícím kódem:
Private Sub BindUserAccounts()
Dim totalRecords As Integer
UserAccounts.DataSource = Membership.FindUsersByName(Me.UsernameToMatch + "%", Me.PageIndex, Me.PageSize, totalRecords)
UserAccounts.DataBind()
' Enable/disable the paging interface
Dim visitingFirstPage As Boolean = (Me.PageIndex = 0)
lnkFirst.Enabled = Not visitingFirstPage
lnkPrev.Enabled = Not visitingFirstPage
Dim lastPageIndex As Integer = (totalRecords - 1) / Me.PageSize
Dim visitingLastPage As Boolean = (Me.PageIndex >= lastPageIndex)
lnkNext.Enabled = Not visitingLastPage
lnkLast.Enabled = Not visitingLastPage
End Sub
Všimněte si, že celkový počet stránkovaných záznamů je určen posledním parametrem FindUsersByName
metody. Po vrácení zadané stránky uživatelských účtů jsou čtyři tlačítka LinkButtons povolena nebo zakázána v závislosti na tom, zda se zobrazuje první nebo poslední stránka dat.
Posledním krokem je napsání kódu pro obslužné rutiny událostí čtyř LinkButtons Click
. Tyto obslužné rutiny událostí musí aktualizovat PageIndex
vlastnost a pak znovu připojit data k Objektu GridView prostřednictvím volání BindUserAccounts
obslužných rutin událostí První, Předchozí a Další jsou velmi jednoduché. Obslužná rutina Click
události pro Last LinkButton je však o něco složitější, protože potřebujeme určit, kolik záznamů se zobrazuje, aby bylo možné určit index poslední stránky.
Protected Sub lnkFirst_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkFirst.Click
Me.PageIndex = 0
BindUserAccounts()
End Sub
Protected Sub lnkPrev_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkPrev.Click
Me.PageIndex -= 1
BindUserAccounts()
End Sub
Protected Sub lnkNext_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkNext.Click
Me.PageIndex += 1
BindUserAccounts()
End Sub
Protected Sub lnkLast_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkLast.Click
' Determine the total number of records
Dim totalRecords As Integer
Membership.FindUsersByName(Me.UsernameToMatch + "%", Me.PageIndex, Me.PageSize, totalRecords)
' Navigate to the last page index
Me.PageIndex = (totalRecords - 1) / Me.PageSize
BindUserAccounts()
End Sub
Na obrázcích 8 a 9 je znázorněno vlastní stránkovací rozhraní v akci. Obrázek 8 ukazuje ManageUsers.aspx
stránku při zobrazení první stránky dat pro všechny uživatelské účty. Všimněte si, že se zobrazí jenom 10 ze 13 účtů. Kliknutím na odkaz Další nebo Poslední dojde k zpětnému odeslání, aktualizaci PageIndex
na hodnotu 1 a vytvoření vazby druhé stránky uživatelských účtů k mřížce (viz obrázek 9).
Obrázek 8: Zobrazí se prvních 10 uživatelských účtů (kliknutím zobrazíte obrázek v plné velikosti)
Obrázek 9: Kliknutím na další odkaz zobrazíte druhou stránku uživatelských účtů (kliknutím zobrazíte obrázek v plné velikosti).
Souhrn
Správci často potřebují vybrat uživatele ze seznamu účtů. V předchozích kurzech jsme se zabývali používáním rozevíracího seznamu naplněného uživateli, ale tento přístup není škálovatelný. V tomto kurzu jsme prozkoumali lepší alternativu: filtrovatelné rozhraní, jehož výsledky se zobrazují ve stránkovaném GridView. Díky tomuto uživatelskému rozhraní můžou správci rychle a efektivně najít a vybrat jeden uživatelský účet z tisíců.
Šťastné programování!
Další čtení
Další informace o tématech probíraných v tomto kurzu najdete v následujících zdrojích informací:
O autorovi
Scott Mitchell, autor několika knih o ASP/ASP.NET a zakladatel 4GuysFromRolla.com, pracuje s webovými technologiemi Microsoftu od roku 1998. Scott pracuje jako nezávislý konzultant, školitel a spisovatel. Jeho nejnovější kniha je Sams Teach Yourself ASP.NET 2.0 in 24 Hours. Scotta můžete zastihnout na mitchell@4guysfromrolla.com nebo prostřednictvím jeho blogu na http://ScottOnWriting.NETadrese .
Zvláštní poděkování
Tato série kurzů byla zkontrolována mnoha užitečnými recenzenty. Hlavní revidující pro tento kurz byla Alicja Maziarz. Chcete si projít moje nadcházející články na WEBU MSDN? Pokud ano, dejte mi čáru na