Repeater, ListView, DataList, DataGrid, GridView ... który wybrać?

Tak wiele różnych kontroli do wyboru! Jakie są najlepsze praktyki w określaniu, którą kontrolę wykorzystać do wyświetlania danych w ASP.NET?

Author: mattruma, 2008-09-26

5 answers

It ' s really about what you trying to achieve

  • Gridview-Ograniczony w projektowaniu, działa jak tabela html. Więcej wbudowanych funkcji, takich jak edycja / aktualizacja, strona, sortowanie. Dużo kosztów.

  • DataGrid-stara wersja widoku Gridview. Gridview to super datagrid.

  • Datalist - bardziej konfigurowalna wersja Gridview. Ma też trochę nad głową. Więcej pracy ręcznej, ponieważ musisz ją zaprojektować samodzielnie.

  • ListView-nowy Datalista :). Prawie hybryda datalist i gridview gdzie można używać stronicowania i budować w GridView jak funkcjonalność, ale mają swobodę projektowania. Jedna z nowych kontrolek w tej rodzinie

  • Repeater-bardzo lekki. Brak wbudowanych funkcji, takich jak nagłówki, stopki. Ma najmniej kosztów.

 142
Author: WebDude,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 12:55:21

Każdy inny ją uderzył: to zależy.

Teraz kilka konkretnych wskazówek (rozszerzając doskonałą odpowiedź WebDude powyżej)...

Czy twój projekt pasuje do naturalnego arkusza kalkulacyjnego lub widoku siatki danych? GridView .

Czy musisz wyświetlać listę lub inny sformatowany widok danych, ewentualnie z nagłówkami i stopkami, i prawdopodobnie z konkretnymi kontrolkami i / lub formatowaniem dla każdego rekordu danych? (Np. niestandardowe linki, ewentualnie przyciski lub konkretna edycja Kontrola?) Czy ten wyświetlacz nie pasuje naturalnie do arkusza kalkulacyjnego lub widoku siatki? ListView

Jeśli spełniasz wszystkie kryteria ListView, ale naturalnie zmieścisz się w siatce, możesz rozważyć DataList .

Wybieram Repeater Kiedy potrzebuję tylko podstawowych danych iterowanych z niestandardowymi bitami projektu, bez nagłówków, bez stopek, ładnie i czysto.

 27
Author: John Rudy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 13:53:14

Widok Znaczników

Deklarowanie poniższego przykładowego kodu jest możliwe dla wszystkich 3 (ListView, DataList , Repeater)

<asp:ListView runat="server" OnItemCommand="Unnamed1_ItemCommand">
<ItemTemplate> <%# Eval("Name")%>    </ItemTemplate>
<asp:ListView>

Na poniższych listach możesz zobaczyć dostępne szablony i opcje dla każdego z nich i zobaczyć różnice dla siebie

ListView (zwróć uwagę na edytowanie, grupowanie, wstawianie, układ)

  • AlternatingltemTemplate
  • EditltemTemplate
  • EmptyDataTemplate
  • EmptyltemTemplate
  • GroupSeparatorTemplate
  • GroupTemplate
  • lnsertltemTemplate
  • ItemSeparatorTemplate
  • ItemTemplate
  • LayoutTemplate
  • SelectedltemTemplate

DataList (zwróć uwagę na styl pary)

  • AlternatingltemStyle
  • AlternatingltemTemplate
  • EditltemStyle
  • EditltemTemplate
  • FooterStyle
  • FooterTemplate
  • HeaderStyle
  • HeaderTemplate
  • ItemStyle
  • ItemTemplate
  • SelectedltemStyle
  • SelectedltemTemplate
  • SeparatorStyle
  • SeparatorTemplate

Repeater

  • AlternatingltemTemplate
  • FooterTemplate
  • HeaderTemplate
  • ItemTemplate
  • SeparatorTemplate

Kod Widok (Widok zaawansowany)

CompositeDataBoundControl :

Spójrz na poniższą hierarchię klas (i powiązane kontrolki).

Te kontrolki obsługują inne asp.net kontrolki w szablonach do wyświetlania bound-data użytkownikowi

Klasy CompositeDataBoundControl (i związane z nimi kontrole)

Kilka opisów dla lepszego wyjaśnienia

Kontrolka ListView

Kontrola ListView używa również szablonów do wyświetlania danych. Jednak obsługuje wiele dodatkowe szablony, które pozwalają więcej scenariuszy podczas pracy z danymi. Szablony te obejmują LayoutTemplate,GroupTemplate,ItemSeparatorTemplate.

Kontrola ListView (w przeciwieństwie do DataList i Repeater ) również pośrednio wspiera możliwość edytuj, wstawiaj i usuwaj dane za pomocą kontrolki źródła danych. Można definiować poszczególne szablony dla każdego z tych scenariuszy.

Sterowanie DataList

DataList control działa Jak Repeater control. Informatyka powtarza dane dla każdego wiersza w zestawie danych, i wyświetla te dane zgodnie z zdefiniowanym szablonem. jednakże , przedstawia dane zdefiniowane w szablonie w różnych strukturach HTML. Obejmuje to opcje poziome lub pionowe layout, a pozwala również ustawić, jak dane mają być powtarzane, jako układ przepływu lub tabeli.

Kontrolka DataList nie używa automatycznie kontrolki źródła danych do edycji danych. Zamiast, it dostarcza zdarzenia poleceń w którym możesz napisać własny kod dla tych scenariuszy. Na włącz te zdarzenia, dodajesz kontrolkę przycisku do jednego z szablonów i ustawiasz przycisk Właściwość CommandName dla słowa kluczowego Edytuj, Usuń, Aktualizuj lub Anuluj. Właściwe zdarzenie jest następnie podnoszone przez kontrolę Datalistyczną.

Sterowanie Repeater

Kontrola Repeater używa również szablonów do definiowania własnych powiązań. Nie pokazuje jednak danych jako pojedynczych rekordów. Zamiast tego powtarza wiersze danych w miarę określ w szablonie. To umożliwia tworzenie pojedynczego wiersza danych i powtarzanie go na całej stronie.

Kontrola repeatera jest szablonem Tylko do odczytu . Oznacza to, że obsługuje tylko ItemTemplate. Nie obsługuje domyślnie edycji, wstawiania i usuwania. Należy wziąć pod uwagę jeden z inne kontrolki jeśli potrzebujesz tej funkcjonalności, w przeciwnym razie będziesz musiał sam to zakodować dla Kontrola repeatera.


Powyższe opisy pochodzą z egzamin MCTS 70-515 Tworzenie aplikacji internetowych z Microsoft.NET ramy 4 książka.

DataGrid nie jest nawet wymieniony w tej książce i jest zastępowany przez popularne GridViews i ładnie odpowiedział przez innych użytkowników

 19
Author: Iman Abidi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-07 05:05:06

W rzeczy samej! Pisałem na blogu o różnicach między ASP.NET 4.0 Narzędzia danych . Zasadniczo gridviews są najpotężniejszym sposobem prezentowania informacji tabelarycznych, podczas gdy kontrolki ListView służą do bardziej skomplikowanego wyświetlania powtarzających się danych. Gdybym dawał rady ASP.NET początkujący, powiedziałbym im, aby nauczyli się gridviews na wylot i ignorowali inne kontrolki na początek.

 6
Author: Andy Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-11 08:48:29

Wszystko sprowadza się do tego, jak chcesz układać swoje dane.

Jeśli chcesz kontrolować układ (jak tables versus CSS versus whatever), gdy używasz repeatera lub ListView. Między nimi ListView daje o wiele więcej zdarzeń i wbudowanych poleceń do edycji, wybierania, wstawiania. Dodatkowo funkcja stronicowania i grupowania. Repeater jest niezwykle prosty, powtarza układ z danymi. Ponieważ układ tworzy się ręcznie, Listview i Repeater wymagają więcej kod.

GridView jest zaktualizowanym DataGrid więc nie ma prawie żadnego powodu, aby używać DataGrid. GridView działa naprawdę dobrze po podłączeniu do standardowego ASP.NET zasobów danych, ale ogranicza cię do układu tabelarycznego z wieloma regułami układu. Widok GridView wymaga mniej kodu, ponieważ używasz wbudowanego układu.

 5
Author: Joseph Daigle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 12:51:44