2008-08-19 7 views
9

Neugierig, wenn andere gleich sind wie ich. Für mich sind Kontrollen wie Datagrid/Gridview/Formview/etc. eignen sich nur für Präsentationen oder Demos. Um sich die Zeit zu nehmen und diese Steuerelemente zu optimieren, überschreiben Sie ihr Standardverhalten (das Anhaken in ihre dummen Ereignisse usw.) ist ein großer Kopfschmerz. Die einzige Steuerung, die ich verwende, ist der Repeater, da er mir die größte Flexibilität gegenüber den anderen bietet.Wer nutzt DataGrid/GridView/FormView/etc in Produktions-Apps?

Kurz gesagt, sie sind ziemlich viel Bloatware.

Ich würde lieber meine eigenen HTML/CSS weben, verwenden Sie meine eigenen benutzerdefinierten Paging-Abfragen.

Noch einmal, wenn Sie eine schnelle Seite werfen müssen, sind diese Kontrollen großartig (vor allem, wenn Sie versuchen, Menschen in die Leichtigkeit von .NET Entwicklung zu werben).

ich in der Minderheit sein muss, sonst hätte MS nicht so viel Entwicklungszeit auf diese Art von Kontrollen ...

+0

Alle asp.net Kontrollen sind wie folgt. Schreckliche und extrem seltsame Abstraktionen um was sehr einfache HTML- und JS-Interaktion sein sollte. Take sie für eine regelmäßige glückliche Templating-Sprache. Ich weiß nicht, warum Leute freiwillig Dinge benutzen, die ihre Entwicklungsmöglichkeiten verkrüppeln und wahnsinnige Edge-Case-Probleme haben. –

Antwort

2

Ich mag die telerik RadGrid gewidmet ist. Ihr Produkt ist nicht billig, aber Sie erhalten viele Kontrollen und Funktionen. Und die Datenbindungsunterstützung ist ziemlich gut, sowohl in einer einfachen asp.net-Datenquellenbindungsweise als auch in einer eher benutzerdefinierten handle-your-own-Datenbindungsereignisse.

17

Ich schreibe ziemlich viel mein eigenes HTML - ich benutze die ListView und Masterpages, aber nicht wirklich die Kontrollen viel mehr. Mein ListView lacht übrigens über deinen albernen Repeater.

Allerdings ist Bloatware nicht unbedingt eine schlechte Sache. Wenn ich eine Intranet-Anwendung mit geringem Volumen benötigt, würde ich eher einen weniger erfahrenen Entwickler zum Ziehen und Ablegen von Steuerelementen bezahlen als für einen HTML-Twiddler (wie Sie oder ich), um jedes Tag zu erstellen. Es gibt definitiv einen Platz für den schnellen, einfachen Ansatz. Was kostet "Bloatware" in diesem Szenario, solange der kontrollbasierte Code wartungsfreundlich geschrieben ist? Häufig erfordern die Verdrahtungssteuerungen weniger benutzerdefinierten Code, was eine einfache Wartung bedeutet.

Der eine Ort, dem ich nicht zustimmen kann - ziemlich unabhängig von der Anwendung - ist in der Herstellung Ihrer eigenen Paging-Abfragen. Sie mögen so etwas tun, aber es ist absolut kein Geschäftswert darin. Es gibt mehrere professionelle DAL-Tools, die normalerweise wartungsfreundlichere und schnellere Abfragen schreiben als die meisten Entwickler. Selbst wenn Sie die perfekte Suchabfrage liebevoll erstellen, wird sie nicht mit Änderungen am Schema Schritt halten, es sei denn, Sie setzen Stunden danach fort. Ich denke, diese Stunden besser nutzen zu können, ist ein leichtes System zu bauen und diese Stunden in die Überwachung und Behebung spezifischer Engpässe zu investieren, anstatt sofort auf die Ebene der "Datenbank-Assemblersprache" zu springen.

3

Ich habe GridView ausgiebig für eine Adminstrative Konsole verwendet. Ich habe sogar ein benutzerdefiniertes DataFieldControl erstellt, das den Headertext des Felds und den Sortierausdruck basierend auf dem Datenfeld festlegt, eine Insert-Zeile am unteren Rand erstellt und automatisch die Werte in der Zeile sammelt und an die Einfügemethode der Datenquelle weiterleitet und ein Listenfeld generiert wenn eine zusätzliche Listendatenquelle angegeben wird. Es war wirklich nützlich, aber eine riesige Zeit Investition zu bauen.

Ich habe auch ein anderes Steuerelement, das ein neues Datenformular basierend auf den Metadaten der Felder generieren wird, wenn keine Datensätze (in der EmptyDataTemplate) sind.

<asp:GridView ...> 
<Columns> 
     <my:AutoField HeaderText="Type" 
         DataField="TypeId" 
         ListDataSourceID="TypesDataSource" 
         ListDataTextField="TypeName" />   
    </Columns> 

    <EmptyDataTemplate> 
     <my:AutoEmptyData runat="server" /> 
    </EmptyDataTemplate> 

</asp:GridView> 
+0

Ich bin sehr interessiert an der GridView, die Sie hier beschrieben haben, wo Sie benutzerdefinierte Sortierausdruck auf der Kopfzeile hinzugefügt haben. Sind Sie in der Lage, Ihren Code zu teilen? –

2

In meiner Firma wir Gitter überall verwenden, meist ComponentArt Grid (http://www.componentart.com/).Ja, es ist Bloatware, aber Sie bekommen eine Menge Funktionalität, die nicht viel Spaß machen würde, um neu zu erfinden: Sortieren, Paging, Gruppierung, Spaltenneuordnung, Inline-Bearbeitung, Templating (serverseitig und clientseitig). Die clientseitigen APIs sind auch nett.

15

Ich habe Ihre Beiträge Jungs gelesen und es machte mich dumm.

Ich meine in jeder Anwendung, die ich gemacht habe, wo ich arbeite, gibt es mindestens ein Datagrid/Gridview drin. Und ich hatte nicht das Gefühl, dass mir etwas fehlt.

Sicher finde ich Datagrid/Gridview irgendwie aufgebläht, aber sind sie so viel ekelhaft zu verwenden?

+3

Fühlen Sie sich nicht dumm. Tonnenweise Leute benutzen sie. Sie sind nützlich und es ist möglich, ziemlich nette Dinge mit ihnen zu machen. – achinda99

49

Wer denkt, niemand nutzt * Grid-Kontrollen hat eindeutig nie auf einer internen Corporate Webapp gearbeitet.

+5

Ich stimme zu ... In Umgebungen, in denen Sie die Benutzerbasis steuern, große Mengen an Speicherplatz, große Bandbreite und leistungsfähige Server haben, können Sie oft von der Verwendung einiger der standardmäßigen asp.net-Steuerelemente zur schnellen Entwicklung profitieren. – mattruma

+2

stimmten zu, als ich über diesen Thread nachdachte, konnte ich nicht recht herausfinden, warum es einen Gridview-Hass gab. Ich habe es ausgiebig in externen Anwendungen verwendet und es war großartig. Es gibt viele Ereignisse, auf die Sie leicht zugreifen können (rowUpdating, rowEditing) usw. – Dal

2

Ich mag das GridView-Steuerelement und habe es in mehreren benutzerdefinierten DotNetNuke-Modulen für die Website meines Unternehmens verwendet. Zum einen bedeutet die Verwendung der integrierten Steuerelemente weniger Abhängigkeiten, um die man sich kümmern muss. Und sobald ich es eingerichtet hatte, wie ich es wollte, kopierte ich den Code im Grunde auf andere Seiten und musste nur kleinere Verbesserungen vornehmen.

Ich habe festgestellt, dass es so viele Optionen mit modernen Grid-Steuerelementen (Infragistics, Telerik, etc) gibt, dass es länger dauert, das Grid als alles andere zu konfigurieren. Die MS-Steuerelemente sind ziemlich einfach, aber sie können so ziemlich alles tun.

2

Sie sind einer der Vorteile von asp.net. Bis vor kurzem hasste ich sie, aber je mehr du sie benutzt, desto leichter werden sie, sobald du lernst, welche Einstellung du für welche Fälle ändern musst. Hauptsächlich mag ich die Formularansicht und Listenansicht, die Gridview benötigt noch etwas Arbeit.

4

Jede einzelne App, die wir in meinem Unternehmen entwickeln, hat Grids (die Apps sind alle hinter der Firewall). Dazu gehören sowohl Web-Apps als auch Winform-Apps. Für die Web-Apps ist es die gute alte Gridview mit benutzerdefinierter Sortierung für die Winform-Apps, die wir mit Janus Grid verwenden. Ich versuche, die Entwickler/Benutzer dazu zu bringen, an bessere Benutzeroberflächen zu denken, aber es ist schwer zu ändern. Ich muss zugeben, dass es immer noch besser ist als die Alternative, dass die Nutzer ihre eigenen Apps mit Access erstellen, die ich dann unterstützen müsste!

4

Die Verwendung von Steuerelementen wie GridView eignet sich hervorragend für einfache Anwendungen. Selbst wenn Sie ein server-seitiges HTML-Bracket-schlingerndes Ninja sind, können sie die Entwicklung einfacher Dinge viel weniger zeitaufwendig machen. Das Problem ist, dass sie in der Regel beginnen, ihre Unzulänglichkeiten zu entlarven, und Sie am Ende Zeit verbringen müssen, sie sowieso zu optimieren. Aber wenigstens kannst du aufstehen und loslegen, um damit anzufangen.

Zum Beispiel unterstützt das Standard-Paging in einer GridView das Paging in der Datenbank selbst nicht (Sie müssen alle Zeilen laden, bevor sie sie pagen). Wenn Sie also anfangen, die Leistung zu pinchen, brauchen Sie möglicherweise über das eigene Rollen nachzudenken oder, vielleicht besser, eine leistungsfähigere Gitterkontrolle zu finden.

Wie auch immer, der Punkt ist, dass vorgefertigte Komponenten gut sind. Sie helfen. Aber wie immer hängt es davon ab, was Sie tun müssen.

1

Ich habe es noch nie benutzt. Ich stimme völlig zu, es ist Bloatware. Normalerweise verwende ich den Repeater mit benutzerdefinierten Steuerelementen, die ich gemacht habe.

1

Für lange Zeit würde ich versuchen, Datagrid/Gridview zu vermeiden, es wird manchmal zu hacky macht es genau das, was Sie wollen, nach einer bestimmten Anzahl von diesen Tweaks beginnen Sie zu erkennen, es spart nicht auf lange Sicht und Sie erhalten möglicherweise nicht die Kontrolle über Markup, die Sie benötigen.

Die eingebaute Funkruf- und Sortierfunktion funktioniert jedoch gut und im Jahr 2008 gibt es ein neues ListView-Steuerelement, das einige dieser Probleme aussortieren und Ihnen eine bessere Kontrolle über den ausgegebenen HTML-Code geben soll.

1

Ich habe mich schon lange gefragt. Hier scheint Konsens zu bestehen, dass es sich bei den Grid-Kontrollen um Bloatware handelt. Aber kann man definitiv die Kosten für die Verwendung dieser Kontrollen nennen? Wird übermäßig viel HTML an den Browser gesendet? Zu viel Ressource auf dem Server verschlungen? Generiert die HTML-Tabelle schneller (vorausgesetzt, es ist gut geschrieben)?

Zusätzlich zu dem Bloatware-Problem habe ich oft gestrandet, wenn die UI-Anforderungen erweitert wurden, um Features einzuschließen, die über den Umfang der Standardsteuerelemente hinausgehen. Zum Beispiel hatte ich in frühen ASP.Net-Versionen Probleme mit dem Einfügen von Bildern in Spaltenüberschriften. Und ich glaube, es ist immer noch eine Herausforderung, eine zweite Header-Zeile der obersten Ebene hinzuzufügen, die sich über mehrere Spalten erstreckt. Irgendwann wird es wirklich schwierig, mit dem Steuerelement zu kämpfen, um den gewünschten Effekt zu erzielen. Und es ist frustrierend, wenn Sie den gewünschten HTML-Code kennen, aber Sie können das Steuerelement einfach nicht dazu bringen.

Bei einem Projekt gab ich schließlich auf und schrieb mir eine HTML-Tabellenklasse, um ein sehr kompliziertes Raster zu erzeugen. Es hat ein paar Tage gedauert, bis es richtig war. Aber jetzt habe ich den Basiscode und es wird viel effizienter sein, das für zukünftige Grids zu optimieren.

Kein Zweifel, obwohl. Es ist schwer, die ausgefallenen Grid-Controls für eine schnelle Entwicklung zu übertreffen, wenn Sie nur innerhalb ihrer Grenzen leben können.

2

Für meine Intranet-Projekte im Unternehmen sind Grids unverzichtbar. Sie sind die Grundlage für eine einfache Berichterstellung auf der ASP.NET-Plattform für Webformulare.

Einfach zu entwerfen Fügen Sie das Raster auf der Seite ein. Fügen Sie BoundField-Objekte zum einfachen Binden ein. asp:HyperlinkField für die einfache Verknüpfung.

Bindung

Sie Gitter in einer Handvoll Möglichkeiten binden können:

  • eine Sammlung von Objekten (List, ArrayList, Hashtable oder jede einfache Sammlung)
  • SqlDataReader in Ihrem Code-behind (yikes, das würde SQL in Ihrer Präsentationsschicht erfordern)
  • SqlDataSource (spezifizieren Sie einen gespeicherten proc. Alle Spalten auf der resultset Karte dire gerade zu den Spalten des Gitters. Es ist ein sehr schnell und schmutzig, wenn der Bericht nicht Ihr Domain-Objekt nett nachahmt. dh Summierungen von verschiedenen Dingen.)
  • Object (ein Verfahren auf der BL-Bindung)

Für diejenigen, die SqlDataSource und ObjectDataSource heraus nennen könnte, haben Sie nicht immer haben sie in Ihrem ASPX erklärt .cs oder .aspx.vb. Ich befürworte sie hier nicht, sondern weise nur auf die Möglichkeiten hin.

Ich denke nicht, dass Sie die RAD-Vorteile der integrierten GridView und anderen 3rd Party Grids diskontieren können. Management-Typen lieben und wollen Tabellendaten.

1

Wenn Sie mit Designern viel auf öffentlich zugänglichen Websites arbeiten, dann sollten Sie die GridViews ablegen und bei Repeatern bleiben.Das ist meiner Meinung nach sowieso - ich musste Hunderte von GridViews auseinander nehmen und sie in einfache Repeater verwandeln, um die Designanforderungen zu erfüllen.

Wenn Sie in der Nähe von DataGrids oder GridViews mit einem 10-Fuß-Pfosten auf einer öffentlich zugänglichen Website gehen, dann müssen Sie die CSS-freundliche Control Adapter verwenden. (An dieser Stelle könnte es einfacher sein, es einfach im Repeater zu tun.) Bevor die Control Adapter verfügbar sind, hätte ich diese Steuerelemente aus der Verpackung genommen.

Ich finde, dass zu viele .NET-Entwickler nicht ein gutes Verständnis von Design, Zugänglichkeit, CSS, Javascript, Standards usw., weshalb sie zu erliegen Gridviews, Object usw.

13

Ich glaube, Sie müssen lernen Sie, GridViews zu verwenden, bevor Sie sie verurteilen. Ich benutze sie ausgiebig. Am Anfang war es etwas schwierig, bestimmte Dinge herauszufinden, aber jetzt sind sie unentbehrlich.

GridViews in UpdatePanel mit AJAX CRUD und Paginierung sind blitzschnell. Eines der größeren Systeme, die auf diese Weise eingerichtet wurden (für die interne/externe Anwendung), hat im Backend eine moderat große Datenbank. Es gibt viele nvarchar (2000) -Felder und die Übergänge und Aktualisierungen sind groß.

In jedem Fall, wenn Sie Ihre eigene Version der Anzeige von Daten geschrieben haben, möchten Sie vielleicht weiterhin verwenden, wenn es funktioniert. (Das gleiche Argument könnte für das Schreiben Ihres eigenen Compilers, das Schreiben Ihrer eigenen Version von HTML, das Schreiben Ihrer eigenen Version von Datenzugriffs-Binärdateien ...) verwendet werden. Der Vorteil der Verwendung von GridView ist, dass es viele Leute gibt, die damit vertraut sind und dass MSFT die Klasse abstrahiert/modelliert hat, um viele Dinge zu tun, die wir früher manuell erledigen mussten.

1

GridView ist gut und sehr leistungsfähige Steuerung und funktioniert gut mit CSS oder Thema. Das einzige, was mich nervt, ist, dass die VirtualCount-Eigenschaft gelöscht wurde, als altes 1.1 DataGrid durch GridView in asp.net 2.0 ersetzt wurde, und es war nützlich, um benutzerdefiniertes Paging zu implementieren. Dies kann jedoch auch über Datenadapter erfolgen.
Obwohl die Arbeit mit Repeatern ist vielleicht klarer und Sie haben die totale Kontrolle über gerenderte HTML noch würde ich nicht empfehlen, gehen auf diese Wege, weil es schwieriger zu implementieren und zu pflegen ist.

2

Wir verwenden das Infragistics UltraWebGrid + LinqDataSource in unseren Intranet-Apps.

Es gibt uns Ajax, Sortieren, Filtern, Paging alle Server-Seite.

Der "Export to Excel" ist auch eine Killer-Funktion.

Wir haben 5000+ Benutzer, viele Daten, Leistung ist ausgezeichnet.

0

Ich bin ein moderater Entwickler Ich kann sagen, ohne diese Steuerelemente konnte ich nicht lernen zu entwickeln. Nur müssen Sie sich für eine Weile, bis Sie Ihren Weg finden, um es anzupassen und das Endergebnis wird großartig sein

2

Ich habe Grids weitgehend aufgegeben, als ich anfing, aus User Stories zu entwerfen, anstatt aus den Anforderungen der Datenbanktabelle. Und nie editierbare Raster. Der alte Weg war nur, wie wir Benutzer dazu gezwungen haben, die Dateneingabe/Tabellenpflege für unsere Systeme durchzuführen, und sie haben nie ihren Workflow angepasst - jeder echte Job endete damit, von einem Master/Kind-Formular zu einem anderen zu springen.

Und die Benutzer haben es nie herausgefunden - aber sie wussten, dass unsere Anwendungen schwieriger zu verwenden waren, als sie sein sollten.

Eine Ausnahme sind analytische Anwendungen. Aber es gibt relativ wenige davon, und sie sind größtenteils schreibgeschützt.

2

Auch ich würde gerne eine erweiterte Antwort darauf sehen, warum GridView et al als "Bloatware" gelten. Ich habe GridView sowie Produkte von Drittanbietern (Telerik, etc.) ausgiebig genutzt und finde heraus, dass sie für die meisten internen und einige externe Projekte großartig funktionieren. Sie sind schnell, einfach zu bedienen, anpassbar - und BEST - Ich kann sie an jemanden übergeben, der GridViews kennt, die dann leicht dort abholen können, wo ich aufgehört habe. Wenn ich alle der zahlreichen Apps/Steuerelemente handkodiert hätte, wäre der Overhead bei der nächsten Person, die herausfindet, was vor sich geht, selbst unter den besten Umständen enorm.

Für mich kann ich sehen, einige der 3rd-Party-Produkte Bloatware (aber immer noch manchmal nützlich), aber die Grim-View GridView Ich habe festgestellt, dass ziemlich schnell mit moderaten Abfragen.

0

Ich versuche, alles im Zusammenhang zu sehen. Ich habe eine Seite, die eine schöne Gridview (zeigt 10 Zeilen gleichzeitig, 6 Spalten, Sortieren und Paging) und wenn ich nur die HTML-Tabelle, die zusammen mit dem Viewstate erstellt wird, sehe ich nur 29k Code .

Sind 29k vs. 18k für die Verwendung eines Repeaters oder einer Listenansicht wirklich die Mühe wert in diesen Breitbandzeiten?

Ich persönlich bleibe bei den Gridviews, aber der Design-Typ, mit dem ich arbeite, kritisiert manchmal, dass ich versuche, ihn über CSS zu stylen.

1

Ich habe nie zuvor das Standard-WinForms-Grid verwendet, aber bei meinem letzten Job haben wir das ComponentOne FlexGrid ausgiebig benutzt und es hat wunderbar funktioniert. Es gab immer noch einige Unannehmlichkeiten mit dem Versuch, alle Anpassungen, die wir wollten, zu bekommen, aber insgesamt hat es uns eine Menge Zeit gespart und schöne Ergebnisse hervorgebracht.

Derzeit arbeite ich mit Silverlight 3 und RIA Services und ich kann mir nicht vorstellen, zu versuchen, was wir ohne die DataGrid und DataForm-Steuerelemente zu produzieren. Die eingesparte Zeit überwiegt bei weitem die Kosten.

1

Komponenten wie GridView/FormView/DataGrid folgen der 80/20-Regel.

Dies bedeutet, dass 80% der Zeit, wenn Sie sie für einfache Zwecke verwenden, sie die Arbeit erledigen und extrem einfach zu implementieren sind.

Aber 20% der Zeit werden Sie versuchen, etwas komplexes (oder komisches) zu bauen, und Sie werden gezwungen sein, durch ein Dutzend Reifen zu springen und den Code in vielerlei Hinsicht zu biegen, um eine Lösung zu implementieren.

Der Trick ist zu lernen, ob das Problem ein 80 Problem oder 20 Problem ist, wenn Sie das 20 Problem früh identifizieren können, sind Sie viel besser dran, den Code von Grund auf selbst zu schreiben und die "Zeitersparnis" ein.

2

Ich benutze sie ausgiebig in der Unternehmensumgebung, in der ich arbeite und ich arbeite gerade mit einem. Die Leute, die sie nicht benutzen, erinnern mich an all die "Ich habe es mit Notepad" Entwicklern von Jahren gebaut. Was ist der Sinn von asp.net, wenn Sie die Zeitersparnis nicht nutzen wollen?

0

Nur Ihre Beiträge lesen. Ich stimme zu, dass PHP einfacher ist als ASP. aber ich habe gerade begonnen, Visual Studio für Formviews und Gridviews zu verwenden. Für Vb- oder C# -Programmierer kann es nicht viel einfacher werden. ASP hat immer noch Probleme beim Hochladen großer Dateien. PHP ist ein Kinderspiel. Ich führe PHP unter IIS 7.5