Laden...

ASP.NET MVC Webgrid

Erstellt von itstata vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.813 Views
I
itstata Themenstarter:in
302 Beiträge seit 2008
vor 12 Jahren
ASP.NET MVC Webgrid

Hallo Leute,

in ASP.NET MVC 3 gibt es ja das WebGrid. Ich bin eigentlich auch recht zufrieden bis auf einige Anwendungsfälle:

  • Extensionsmethoden können nicht verwendet werden und müssen statisch aufgerufen werden
  • Es kann nur der Name der Spalte angegeben werden. Die Spalte kann aber nicht weiter konfiguriert werden

Ich würde nun gern elegant meiner Spalte eine fest breite geben.


@{var grid = new WebGrid(
      @Model,
      canPage: true,
      rowsPerPage: 50,
      canSort: true);
}
@grid.GetHtml(
alternatingRowStyle: "alternateRow",
footerStyle: "webgrid-footer",
columns: grid.Columns( grid.Column("LangeBezeichung", "LangeBezeichung",...));

über das Attribut "style" kann ich der Row eine CSS-Klasse zuweisen, aber nicht der Spalte direkt. Hat jemand hierfür einen Workaround?

Besten Gruß

16.834 Beiträge seit 2008
vor 12 Jahren

Wieso nutzt Du nicht einfach Plain-HTML und baust die Tabelle mit den entsprechenden Tags selbst? 🤔
MVC ist ja dazu da bzw. gibt die Möglichkeit, direkt das generieren des HTML Codes zu beeinflussen. Dann nutz das doch und nicht vorgefertigte Dinge, die Deine Möglichkeiten einschränken.

Nichts desto trotz: Du kannst auch in HTML keine Spalten "direkt" beeinflussen. Hier musst Du für das jeweilige td-Tag innerhalb der Schleife Deine spezifischen Styles bekannt machen.

I
itstata Themenstarter:in
302 Beiträge seit 2008
vor 12 Jahren

Hi,

also in Plain-HTML würde ich eine colgroup definieren oder dem "<th>"-Tag über eine Klasse oder fast lieber direkt über das style-attribut eine Breite geben.

Warum ich kein Plain-Html-verwende:

  • der Code eines Grids sieht nicht gerade leichtgewichtig aus
  • kein Paging/Sorting

Eigentlich ist Paging und Sorting mein K.O.-Kriterium. Ich finde ein Framework sollte hierfür eine fertige Lösung haben. Ich würde mir sonst den Controller-Code ziemlich versauen. Vielleicht seh ich das auch völlig falsch. Deine Meinung würde mich dazu interessieren.

16.834 Beiträge seit 2008
vor 12 Jahren

Ich finde ein Framework sollte hierfür eine fertige Lösung haben.

Damit stehst Du womöglich ziemlich alleine da.

Die ganzen Ajax und Javascript-Features, die Du hier nutzt, wird es mit MVC 4 nicht mehr geben. MS hat bereits bekannt gegeben, dass man auf jQuery setzen sollte, da Mvc.js nicht mehr weiter entwickelt wird.

So etwas gehört auch nicht wirklich ins Framework; aufgrund der Update-Zyklen und Browser-Anpassungen ist man mit jQuery besser aufgehoben als bei MS.
Es gibt unzählige Plugins, die ein Sorting / Paging ermöglichen, allen voran jQuery.dataTables.js.

Der Code eines Grids ist nen 10-15 Zeiler. Anpassungen von Spalten vllt 2-3 Zeilen mehr. Aber das sind wirklich HTML Grundlagen.

Sorting gehört zudem in meinen Augen ebenfalls nicht "unbedingt" in den Controller, außer man möchte / muss expliziert auf ein Server-seitges Sortieren zurückgreifen.

I
itstata Themenstarter:in
302 Beiträge seit 2008
vor 12 Jahren

Also das Feature was ich nutze ist ja nun gerade in MVC3 hereingekommen.

Ich habe schon alle Wege probiert (JQGrid, PlainHTML und jetzt WebGrid). In meinen Szenario ist es leider oft so, dass manchmal zwei Grids oder mehr auf der Seite existieren. Der Kunde möchte dann leider auch das volle Programm (Pageing, Sorting, Rowselect).
Was ich an sich schön finde an einem Grid ist, dass der Code direkt an einer Stelle steht. Wenn ich Plain-Html schreibe muss man schon ziemlich Scrollen.

Mit dem serverseitigen Filtern gebe ich dir recht. Das Feature brauche ich sehr selten.

Ich werde mir mal eine Plain-HTML-Lösung mit den genannten Features anschauen. Ich lass mich ja gerne bekehren 😃

16.834 Beiträge seit 2008
vor 12 Jahren

Also ich hab bisher einige MVC Anwendungen erstellt, die auch noch alle Produktiv sind.
Jeder meiner Tables nutzt jQuery und es gibt nirgens irgendwelche Probleme mit Sorting, Paging oder sonstigen Dingen.

MVC ist eben dazu da, dass man sehr viel am Code beeinflussen kann. Stört Dich das, musst Du eventuell einfach in die WebForms Schiene wechseln. Aber die Philosophie von MVC tickt einfach ein wenig anders - die ganze Web-Welt tickt ein wenig anders.

Und ja: MS ist manchmal nicht immer sehr zielstrebig was das einbringen neuer Features bringt. Was aber mittlerweile sein gutes hat: wenn man merkt es, man muss das Rad nicht neu erfinden, werden vorhandene Ressourcen nicht mehr verschwendet und das Produkt eingestampft.

I
itstata Themenstarter:in
302 Beiträge seit 2008
vor 12 Jahren

Ich habe mir mal jQuery.dataTables.js. angeschaut. Ich muss dir da wirklich Recht geben. Klappt wunderbar! Danke für den Tipp. Das einzige was auf den ersten Blick bisschen hässlich ist, ist die ungarische Notation bei den Properties.

16.834 Beiträge seit 2008
vor 12 Jahren

Geschmackssache - aber üblich bei JavaScript, da "typenlos".