Laden...

GridView-Control selbst aufbauen

Letzter Beitrag vor 16 Jahren 7 Posts 1.858 Views
GridView-Control selbst aufbauen

Hey community,

ich bin derzeitig dabei eine ASP.NET anwendung zu schreiben und um ehrlich zu sein wünschte ich mir das es leichter wäre. 😉

Mein problem ist das ich eine GridView erstellen will und zwar dynamisch. Ich muss zur laufzeit bestimmen welche Spalten in der GridView angezeigt werden und welche Werte die dazugehörigen Zeilen enthalten.

Leider bekomme ich es nicht hin mir die GridView so aufzubauen und selbst Spalten und Zeilen zu Erstellen wenn das GridView ansich vorher gar nicht existiert bzw. keine Spalten respektive Zeilen enthält.

Hoffe ihr kennt einen guten Artikel dazu oder könnt mir direkt weiterhelfen den ich komme, verzweifelnderweise, nicht weiter.

Habe mich auch schon in der MSDN umgesehen und hier im Forum und leider nichts passendes gefunden.

Meine Behauptung die ich vor einigen jahren mal gemacht habe wurde leider auch heute wieder bestätigt. "Bei ASP.NET wendet man entweder die Dinge so an wie Mickeysoft es will oder man hat nen haufen Arbeit und Probleme an der Backe". grrrr

Desktop-Applikationen sind ja so schön 🙂 ....... viva las php bei web.

greetz mbk_chilli

Die drei Tugenden eines Programmierers:
Faulheit, Ungeduld und Hochmut!

Hallo mbk_chilli

Mein problem ist das ich eine GridView erstellen will und zwar dynamisch. Ich muss zur laufzeit bestimmen welche Spalten in der GridView angezeigt werden und welche Werte die dazugehörigen Zeilen enthalten.

Leider bekomme ich es nicht hin mir die GridView so aufzubauen und selbst Spalten und Zeilen zu Erstellen wenn das GridView ansich vorher gar nicht existiert bzw. keine Spalten respektive Zeilen enthält.

Was genau willst du machen, und wie hast du es bisher schon probiert?
Stichworte: DataBound, RowDataBound könnten helfen.

Meine Behauptung die ich vor einigen jahren mal gemacht habe wurde leider auch heute wieder bestätigt. "Bei ASP.NET wendet man entweder die Dinge so an wie Mickeysoft es will oder man hat nen haufen Arbeit und Probleme an der Backe". grrrr

Das ist überall gleich, aber nicht ganz so wie du schreibst (empfinde ich das).
An einiges muss man sich schon halten, da es vorgegeben ist - same with P*P, etc....

Aber den ganzen Rest kannst du so krumm machen wie du willst, und es geht trotzdem irgendwie.
Das geht meistens aber länger und ist schlechter, ausser man weiss zu tun ist und hat schon Erfahrungen.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

Hey Peter,

also mittlerweile bin ich soweit das es klappt das ich meine eigene Spalten hinzufügen kann. Hätte ich mal besser gelesen und einen Teil nicht übersprüngen wäre ich schon gestern soweit gewesen.


                    this.GridView1.Columns.Clear();

                    foreach (string propKeys in propertyNameList.Keys)
                    {
                        string[] gridVal = propertyNameList[propKeys];

                        BoundField field = new BoundField();
                        field.DataField = gridVal[1];
                        field.HeaderText = gridVal[0];

                        this.GridView1.Columns.Add( field );
                    }

                    this.GridView1.DataSource = logicalForm;
                    this.GridView1.DataBind();

Mein problem ist nun nur noch das er alle Properties aus meinem locigalForm-Object ausgibt und ich eigentlich nur die haben will die ich explizit mit dem BoundField-Object festgelegt habe diese er ja auch ausgibt.

Hast du da einen Ansatz bzw. eine Lösung, denn dann wäre ich damit fertig und kann mich endlich wieder von der Oberfläche entfernen und in die (wie ich sage) echte Programmierung gehen 😉.

Und jo hast recht mit ASP.NET geht auch alles aber naja ich finde ASP hat noch ein wenig nachzuholen denn wenn ich das unter PHP geschriebn hätte wäre ich binnen kürzester Zeit fertig gewesen. Naja ok PHP ist auch meine Muttersprache seit vielen vielen Jahren und dazu trägt auch mein eigenes Framework bei was ich für meine PHP-Seiten einsetze.

Aber die Macht von .NET sehe ich mehr im Bereich der Desktop-Applikationen.

gruß
Maurice

Die drei Tugenden eines Programmierers:
Faulheit, Ungeduld und Hochmut!

Hallo Maurice

Mein problem ist nun nur noch das er alle Properties aus meinem locigalForm-Object ausgibt und ich eigentlich nur die haben will die ich explizit mit dem BoundField-Object festgelegt habe diese er ja auch ausgibt.

Hast du da einen Ansatz bzw. eine Lösung, denn dann wäre ich damit fertig und kann mich endlich wieder von der Oberfläche entfernen und in die (wie ich sage) echte Programmierung gehen 😉.

<GridView>.AutoGenerateColumns = false

Und jo hast recht mit ASP.NET geht auch alles aber naja ich finde ASP hat noch ein wenig nachzuholen denn wenn ich das unter PHP geschriebn hätte wäre ich binnen kürzester Zeit fertig gewesen. Naja ok PHP ist auch meine Muttersprache seit vielen vielen Jahren und dazu trägt auch mein eigenes Framework bei was ich für meine PHP-Seiten einsetze.

Also das kannst du so aber bitte nicht sagen.
Eher du hast was nachzuholen, nicht ASP.NET 😉

Wenn du ein Raumschiff geschenkt bekommst und das Ding nicht dazu bringen kannst, das es fliegt, kannst du auch nicht sagen: Das Raumschiff hat einiges nachzuholen, denn wenn ich das Auto genommen hätte, wäre ich geflogen (gefahren).

Es ist aber so, das für ASP.NET ein höherer Lernaufwand und eine höhere Lernkurve benötigt wird, bis man die Vorteile wirklich ausspielen kann.
Dafür ist die Entwicklung dann sehr angenehm und praktisch nicht eingeschränkt.

Aber die Macht von .NET sehe ich mehr im Bereich der Desktop-Applikationen.

Wieso?

Die Macht von .NET sehe ich überall, besonders im Zusammenspiel von mehreren Applikationen. Also: Web, Client, WebService, ....

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

Super dank dir es hat funktioniert.

Jo habe einiges bei ASP nachzuholen. 😉 Bin mal gespannt ob es noch dazu kommt da dies nur ein kleines Projekt ist bin sonst für ein anderes Produkt der Firma verantwortlich (Win. Desktop-Appl.)

Naja als Entwickler darf ich mich ja eh nicht vor den technologien verstecken, da ist nur dieser kleine Schweinehund in mir der PHP vergöttert. grrr
Und da ich mehr ins kalte Wasser gesprungen bin anstatt vor dem Programmieren die Temperatur zu messen war ich etwas ... naja ... nackt bei der Entwicklung mit ASP.

Aber nochmal danke für deine Hilfe, vllt kann ich mich ja mal erkenntlich zeigen.

Gruß aus Hamburg
Maurice

Die drei Tugenden eines Programmierers:
Faulheit, Ungeduld und Hochmut!

Hallo Maurice

Naja als Entwickler darf ich mich ja eh nicht vor den technologien verstecken, da ist nur dieser kleine Schweinehund in mir der PHP vergöttert. grrr

Hehe, stimmt schon 🙂
Wenn du mal so richtig fit bist in ASP.NET, ists genau umgekehrt, glaubs mir^^

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

Da ich ja eine eigene Datenquelle verwende kann ich ja die vorgegebene Sorting und Paging Funktionalitäten nicht verwenden.

Das paging habe ich breits erfolgreich umgesetzt waren ja auch nur zwei zeilen. Die Events Sorting und PageIndexChanging habe ich auch behandelt.

Aber eben das Sorting funktioniert bei mir nicht.

Das ist derzeitig der effektive Code in dem Sorting-Event:


IList<obj> form = (IList<obj>)Session["obj"];

this.GridView1.DataSource = form;
this.GridView1.Sort( e.SortExpression, e.SortDirection );
this.GridView1.DataBind();

Und das ist noch etwas was ich gefunden habe und versucht habe umzusetzten, jedoch das DataTable-object immer null ist und es daher nicht funktioniert!


DataTable dataTable = this.GridView1.DataSource as DataTable;

if (dataTable != null)
{
DataView dataView = new DataView( dataTable );
dataView.Sort = e.SortExpression + " " + "ASC";

this.GridView1.DataSource = dataView;
this.GridView1.DataBind();
}

Ich jemand von euch hat eine Idee wie ich das zum laufen bekomme.

Leider kann ich wegen der dynamik der Anwendung nicht direkt die Daten aus der Datenbank holen und dann direkt die Datenbankrelationen ausgeben.

greetz mbk_chilli

Die drei Tugenden eines Programmierers:
Faulheit, Ungeduld und Hochmut!