Tak wiele różnych elementów sterujących do wyboru! Jakie są najważniejsze wskazówki dotyczące określania, która kontrolka ma być używana do wyświetlania danych w ASP.NET?
Tak wiele różnych elementów sterujących do wyboru! Jakie są najważniejsze wskazówki dotyczące określania, która kontrolka ma być używana do wyświetlania danych w ASP.NET?
Odpowiedzi:
Tak naprawdę chodzi o to, co próbujesz osiągnąć
Gridview - ograniczona w projektowaniu, działa jak tabela html. Więcej wbudowanych funkcji, takich jak edycja / aktualizacja, strona, sortowanie. Dużo kosztów ogólnych.
DataGrid - stara wersja widoku Gridview. Gridview to super datagrid.
Datalist - bardziej konfigurowalna wersja Gridview. Ma też trochę narzutów. Więcej ręcznej pracy, ponieważ musisz sam to zaprojektować.
ListView - nowy Datalist :). Prawie hybryda datalist i gridview, w której można używać stronicowania i budować w Gridview podobnej funkcjonalności, ale masz swobodę projektowania. Jedna z nowych kontrolek w tej rodzinie
Repeater - bardzo lekki. Brak wbudowanych funkcji, takich jak nagłówki, stopki. Ma najmniej narzutów.
Wszyscy inni to uderzyli: to zależy.
Teraz dla konkretnych wskazówek (rozwinięcie doskonałej odpowiedzi WebDude powyżej) ...
Czy Twój projekt pasuje do naturalnego arkusza kalkulacyjnego lub widoku siatki danych? GridView .
Czy potrzebujesz wyświetlić listę lub inny sformatowany widok danych, ewentualnie z nagłówkami i stopkami oraz prawdopodobnie z określonymi kontrolkami i / lub formatowaniem dla każdego rekordu danych? (Np. Niestandardowe linki, być może LinkButtons lub określone kontrolki edycji?) Czy ten ekran nie pasuje naturalnie do arkusza kalkulacyjnego lub widoku siatki? ListView
Jeśli spełniasz wszystkie kryteria ListView, ale naturalnie pasowałbyś do siatki, możesz rozważyć DataList .
Idę na Repeater, gdy potrzebuję tylko podstawowych danych iterowanych z niestandardowymi bitami projektowymi, bez nagłówków, bez stopek, ładnie i czysto.
Deklarowanie następującego 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 oraz samemu zobaczyć różnice
ListView (zwróć uwagę na edycję, grupowanie, wstawianie, układ)
DataList (zwróć uwagę na pary stylów)
Przekaźnik
CompositeDataBoundControl :
spójrz na następującą hierarchię klas (i powiązane kontrolki).
te kontrolki hostują inne kontrolki asp.net w swoich szablonach, aby wyświetlać dane powiązane dla użytkownika
Formant ListView
Formant ListView używa również szablonów do wyświetlania danych. Obsługuje jednak wiele dodatkowych szablonów, które pozwalają na więcej scenariuszy podczas pracy z danymi. Te szablony obejmują LayoutTemplate, GroupTemplate, ItemSeparatorTemplate .
Formant ListView (w przeciwieństwie do DataList i Repeater ) również niejawnie obsługuje możliwość edytowania, wstawiania i usuwania danych przy użyciu kontrolki źródła danych. Możesz zdefiniować indywidualne szablony dla każdego z tych scenariuszy.
Formant DataList
Kontrolka DataList działa podobnie jak kontrolka Repeater . Powtarza dane dla każdego wiersza w zestawie danych i wyświetla te dane zgodnie ze zdefiniowanym szablonem. Jednak przedstawia dane zdefiniowane w szablonie w ramach różnych struktur HTML. Obejmuje to opcje układu poziomego lub pionowego, a także umożliwia ustawienie sposobu powtarzania danych, jako układu przepływu lub układu tabeli.
Formant DataList nie używa automatycznie kontrolki źródła danych do edytowania danych. Zamiast tego udostępnia zdarzenia poleceń, w których można napisać własny kod dla tych scenariuszy. Aby włączyć te zdarzenia, należy dodać kontrolkę Button do jednego z szablonów i ustawić właściwość CommandName przycisku na słowo kluczowe edit, delete, update lub Cancel. Następnie formant DataList wywołuje odpowiednie zdarzenie.
Sterowanie wzmacniaczem
Formant Repeater używa również szablonów do definiowania niestandardowego powiązania. Jednak nie wyświetla danych jako pojedynczych rekordów. Zamiast tego powtarza wiersze danych określone w szablonie. Dzięki temu możesz utworzyć pojedynczy wiersz danych i powtórzyć go na całej stronie.
Formant Repeater jest szablonem tylko do odczytu . Oznacza to, że obsługuje tylko ItemTemplate. Nie obsługuje domyślnie edycji, wstawiania i usuwania. Jeśli potrzebujesz tej funkcji, powinieneś rozważyć jedną z innych kontrolek, w przeciwnym razie będziesz musiał sam ją zakodować dla kontrolki Repeater.
Powyższe opisy pochodzą z książki MCTS Exam 70-515 Tworzenie aplikacji internetowych przy użyciu programu Microsoft.NET Framework 4 .
DataGrid nie jest nawet wspomniany w tej książce i został zastąpiony popularnymi GridViews, a inni użytkownicy ładnie odpowiedzieli
W rzeczy samej! W blogu opisałem różnice między narzędziami danych ASP.NET 4.0 . Zasadniczo widoki siatki są najpotężniejszym sposobem prezentowania informacji tabelarycznych, podczas gdy kontrolki ListView służą do bardziej skomplikowanego wyświetlania powtarzających się danych. Gdybym doradzał nowicjuszowi ASP.NET, powiedziałbym mu, aby nauczył się widoków gridviews od podszewki i na początek zignorował inne kontrolki.
Wszystko sprowadza się do tego, jak chcesz rozmieścić swoje dane.
Jeśli chcesz kontrolować układ (np. Tabele, CSS, czy cokolwiek), użyj Repeater lub ListView. Między nimi ListView zapewnia znacznie 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 tworzysz ręcznie, Listview i Repeater wymagają więcej kodu.
GridView to zaktualizowany DataGrid, więc nie ma prawie żadnego powodu, aby używać DataGrid. GridView działa naprawdę dobrze, gdy jest podłączony do standardowych źródeł danych ASP.NET, ale ogranicza Cię do układu tabelarycznego z wieloma regułami układu. GridView wymaga mniej kodu, ponieważ używasz wbudowanego układu.