Wyświetlanie wielu rekordów w wierszu za pomocą kontrolki DataList (VB)
W tym krótkim samouczku dowiesz się, jak dostosować układ elementu DataList za pomocą właściwości RepeatColumns i RepeatDirection.
Wprowadzenie
Przykłady dataList, które widzieliśmy w poprzednich dwóch samouczkach, renderowały każdy rekord ze źródła danych jako wiersz w kodzie HTML <table>
z jedną kolumną. Chociaż jest to domyślne zachowanie DataList, bardzo łatwo dostosować wyświetlanie elementu DataList, tak aby elementy źródła danych zostały rozłożone na wielokolumna, wielowierszową tabelę. Ponadto można mieć wszystkie elementy źródła danych wyświetlane w jednym wierszu, wielokolumna lista danych DataList.
Układ dataList można dostosować odpowiednio za pomocą jej RepeatColumns
właściwości i RepeatDirection
, które wskazują odpowiednio liczbę kolumn renderowanych i określać, czy te elementy są rozmieszczone w pionie lub w poziomie. Rysunek 1 przedstawia na przykład listę danych, która wyświetla informacje o produkcie w tabeli z trzema kolumnami.
Rysunek 1. Lista danych pokazuje trzy produkty na wiersz (kliknij, aby wyświetlić obraz pełnowymiarowy)
Dzięki wyświetlaniu wielu elementów źródła danych na wiersz lista danych może efektywniej wykorzystać miejsce na ekranie poziomym. W tym krótkim samouczku zapoznamy się z tymi dwoma właściwościami DataList.
Krok 1. Wyświetlanie informacji o produkcie na liście danych
Zanim przeanalizujemy RepeatColumns
właściwości i RepeatDirection
, najpierw utwórzmy listę danych na naszej stronie zawierającej informacje o produkcie przy użyciu standardowego układu tabeli jednokolumna, wielowierszowego. W tym przykładzie wyświetlmy nazwę, kategorię i cenę produktu przy użyciu następujących znaczników:
<h4>Product Name</h4>
Available in the Category Name store for Price
Widzieliśmy, jak powiązać dane z listą DataList w poprzednich przykładach, więc szybko przejdę przez te kroki. Zacznij od otwarcia RepeatColumnAndDirection.aspx
strony w folderze DataListRepeaterBasics
i przeciągnięcia listy danych z przybornika do Projektant. Z poziomu tagu inteligentnego DataList wybierz opcję tworzenia nowego obiektu ObjectDataSource i skonfiguruj ją w celu ściągnięcia danych z metody klasy GetProducts
, wybierając opcję (Brak) z ProductsBLL
kart INSERT, UPDATE i DELETE kreatora.
Po utworzeniu i powiązaniu nowego obiektu ObjectDataSource z listą danych program Visual Studio automatycznie utworzy obiekt ItemTemplate
, który wyświetla nazwę i wartość dla każdego pola danych produktu. ItemTemplate
Dostosuj znacznik deklaratywne bezpośrednio lub z opcji Edytuj szablony w tagu inteligentnym DataList, aby używać znaczników pokazanych powyżej, zastępując tekst Nazwa produktu, Nazwa kategorii i Cena kontrolkami, które używają odpowiedniej składni powiązania danych w celu przypisania wartości do ich Text
właściwości. Po zaktualizowaniu znacznika deklaratywnego ItemTemplate
strony powinien wyglądać podobnie do następującego:
<asp:DataList ID="DataList1" runat="server" DataKeyField="ProductID"
DataSourceID="ObjectDataSource1" EnableViewState="False">
<ItemTemplate>
<h4>
<asp:Label runat="server" ID="ProductNameLabel"
Text='<%# Eval("ProductName") %>'></asp:Label>
</h4>
Available in the
<asp:Label runat="server" ID="CategoryNameLabel"
Text='<%# Eval("CategoryName") %>' />
store for
<asp:Label runat="server" ID="UnitPriceLabel"
Text='<%# Eval("UnitPrice", "{0:C}") %>' />
</ItemTemplate>
</asp:DataList>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
OldValuesParameterFormatString="original_{0}"
SelectMethod="GetProducts" TypeName="ProductsBLL">
</asp:ObjectDataSource>
Zwróć uwagę, że w składni UnitPrice
powiązania danych zawierałem specyfikator Eval
formatu , formatując zwracaną wartość jako walutę —Eval("UnitPrice", "{0:C}").
Poświęć chwilę, aby odwiedzić stronę w przeglądarce. Jak pokazano na rysunku 2, lista DataList jest renderowana jako jednokolumna, wielowierszowa tabela produktów.
Rysunek 2. Domyślnie lista danych renderuje się jako tabela jednokolumna, wielowierszowa (kliknij, aby wyświetlić obraz pełnowymiarowy)
Krok 2. Zmiana kierunku układu elementu DataList
Podczas gdy domyślne zachowanie dla listy DanychList polega na rozkładzie elementów w pionie w jednej kolumnie, tabela wielowierszowa, to zachowanie można łatwo zmienić za pomocą właściwości DataList.RepeatDirection
Właściwość RepeatDirection
może zaakceptować jedną z dwóch możliwych wartości: Horizontal
lub Vertical
(wartość domyślna).
RepeatDirection
Zmieniając właściwość z Vertical
na Horizontal
, lista DataList renderuje swoje rekordy w jednym wierszu, tworząc jedną kolumnę na element źródła danych. Aby zilustrować ten efekt, kliknij pozycję DataList w Projektant, a następnie z okno Właściwości zmień RepeatDirection
właściwość z Vertical
na Horizontal
. Natychmiast po wykonaniu tej czynności Projektant dostosowuje układ DataList, tworząc jednowierszowy, wielokolumny interfejs (patrz Rysunek 3).
Rysunek 3. Właściwość RepeatDirection
określa kierunek, w jaki są elementy listy danych (kliknij, aby wyświetlić obraz pełnowymiarowy)
W przypadku wyświetlania małych ilości danych jednowierszowa tabela wielokolumna może być idealnym sposobem zmaksymalizowania nieruchomości ekranu. Jednak w przypadku większych ilości danych pojedynczy wiersz będzie wymagał wielu kolumn, które wypychają te elementy, które nie mogą zmieścić się na ekranie po prawej stronie. Rysunek 4 przedstawia produkty w przypadku renderowania w pojedynczej rzędu tabeli DataList. Ponieważ istnieje wiele produktów (ponad 80), użytkownik będzie musiał przewinąć z prawej strony, aby wyświetlić informacje o każdym z produktów.
Rysunek 4. W przypadku wystarczająco dużych źródeł danych pojedyncza kolumna DataList będzie wymagać przewijania w poziomie (kliknij, aby wyświetlić obraz pełnowymiarowy)
Krok 3. Wyświetlanie danych w tabeli wielokolumnachowej, wielowierszowej
Aby utworzyć wielokolumnę, wielowierszową listę danych, musimy ustawić RepeatColumns
właściwość na liczbę kolumn do wyświetlenia. Domyślnie RepeatColumns
właściwość jest ustawiona na 0, co spowoduje, że lista danych będzie wyświetlać wszystkie jego elementy w jednym wierszu lub kolumnie (w zależności od wartości RepeatDirection
właściwości).
W naszym przykładzie wyświetlmy trzy produkty dla wiersza tabeli. W związku z tym RepeatColumns
ustaw właściwość na 3. Po wprowadzeniu tej zmiany poświęć chwilę, aby wyświetlić wyniki w przeglądarce. Jak pokazano na rysunku 5, produkty są teraz wyświetlane w trzykolumnach, wielowierszowej tabeli.
Rysunek 5. Trzy produkty są wyświetlane na wiersz (kliknij, aby wyświetlić obraz pełnowymiarowy)
Właściwość RepeatDirection
ma wpływ na sposób, w jaki elementy na liście danych są określone. Rysunek 5 przedstawia wyniki z właściwością ustawioną RepeatDirection
na Horizontal
. Należy pamiętać, że pierwsze trzy produkty Chai, Chang i Syrop aniseed są rozmieszczone od lewej do prawej, od góry do dołu. Następne trzy produkty (począwszy od Chef Anton s Cajun Seasoning) pojawiają się z rzędu pod pierwszymi trzema. RepeatDirection
Zmiana właściwości z powrotem na Vertical
, jednak określa te produkty od góry do dołu, od lewej do prawej, jak pokazano na rysunku 6.
Rysunek 6. W tym miejscu produkty są rozmieszczone w pionie (kliknij, aby wyświetlić obraz pełnowymiarowy)
Liczba wierszy wyświetlanych w wynikowej tabeli zależy od liczby wszystkich rekordów powiązanych z listą Danych. Dokładnie jest to pułap całkowitej liczby elementów źródła danych podzielonych przez RepeatColumns
wartość właściwości. Products
Ponieważ tabela ma obecnie 84 produkty, które są podzielne przez 3, istnieją 28 wierszy. Jeśli liczba elementów w źródle danych i RepeatColumns
wartość właściwości nie są podzielne, ostatni wiersz lub kolumna będą miały puste komórki. Jeśli parametr RepeatDirection
ma wartość Vertical
, ostatnia kolumna będzie zawierać puste komórki. Jeśli RepeatDirection
jest Horizontal
to , ostatni wiersz będzie miał puste komórki.
Podsumowanie
Lista danych domyślnie wyświetla listę elementów w tabeli jednokolumnach, wielowierszowej, która naśladuje układ elementu GridView z pojedynczym polem szablonu. Chociaż ten domyślny układ jest akceptowalny, możemy zmaksymalizować obszar ekranu, wyświetlając wiele elementów źródła danych na wiersz. Osiągnięcie tego celu jest po prostu kwestią ustawienia właściwości DataList na RepeatColumns
liczbę kolumn do wyświetlenia dla każdego wiersza. Ponadto właściwość DataList RepeatDirection
może służyć do wskazania, czy zawartość wielokolumna, wielowierszowa tabela powinna być ułożona poziomo od lewej do prawej, od góry do dołu lub w pionie od góry do dołu, od lewej do prawej.
Informacje o autorze
Scott Mitchell, autor siedmiu książek ASP/ASP.NET i założyciel 4GuysFromRolla.com, współpracuje z technologiami internetowymi firmy Microsoft od 1998 roku. Scott pracuje jako niezależny konsultant, trener i pisarz. Jego najnowsza książka to Sams Teach Yourself ASP.NET 2.0 w ciągu 24 godzin. Można do niego dotrzeć pod adresem mitchell@4GuysFromRolla.com. Lub za pośrednictwem swojego bloga, który można znaleźć na stronie http://ScottOnWriting.NET.
Specjalne podziękowania
Ta seria samouczków została sprawdzona przez wielu pomocnych recenzentów. Recenzentem tego samouczka był John Suru. Chcesz przejrzeć nadchodzące artykuły MSDN? Jeśli tak, upuść mi wiersz pod adresem mitchell@4GuysFromRolla.com.