Announcement

Collapse
No announcement yet.

Datagrid Spalten ein-/ausblenden + Reihenfolge durch Benutzer konfigurierbar

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datagrid Spalten ein-/ausblenden + Reihenfolge durch Benutzer konfigurierbar

    hallo,
    wie kann ich es bewerkstelligen das ich ein Datagrid mit seinen angezeigten Spalten für den Benutzer veränderbar gestalte?

    Der Benutzer sollte zunächst alle vordefinierten Spalten sehen und dann Spalten hinzufügen und entfernen können. Weiterhin sollte er in der Lage sein die Reihenfolge der Spalten selbst fest zu legen.

    Gibt es für diese Anforderung schon fertige datagrid-Komponenten oder etwas fertiges? Nach was könnte ich bei google suchen? Meine bisherigen Suchen bleiben leider ohne brauchbare Ergebnisse.

  • #2
    Eine Suche unter codeproject ist für solche Anforderungen immer nützlich.

    Willst du wirklich ein DataGrid benutzen (für WinForms oder für WebForms?), oder denkst du eher an DataGridView? "Spalten hinzufügen" ist etwas für die Datenmenge, also für DataTable o.ä. Denn für Spalten, die frei im Raum schweben, sehe ich keinerlei Verwendung.

    Zur Reihenfolge der Spalten gibt es bei DataGridView und (soweit ich weiß, das habe ich jetzt nicht geprüft) DataGrid Standard-Eigenschaften wie AllowUserToOrderColumns und DisplayIndex.

    Gruß Jürgen

    Comment


    • #3
      Ich denke da müsste man eher trennen Willst Du die Spalten nur sichtbar und unsichtbar schalten? Das heisst in Deiner gespeicherten Datenmenge sind alle Daten vorhanden und Du möchtest bestimmte Daten nur ausblenden? Oder möchtest Du wenn der Benutzer eine neue Spalte hinzufügt eine neue Spalte in der Datenbank hinzufügen? Beide Vorgehensweisen benötigen vollkommen unterschiedliche Umsetzungen.
      Jede Spalte in dem DataGridView hat eine Visible Property. Diese kann man setzen und dann verschwinden/erscheinen die jeweiligen Spalten. Soweit ich weiss kann man ein DataGridView so einstellen, dass der Benutzer die Spalten selbst anordnen kann. Die aktuelle Einstellung kann natürlich auch in irgendeiner Form in eine Datei geschrieben und daraus geladen werden.

      Comment


      • #4
        hallo, danke erst mal für die Antworten

        Die Spalten sind alle in der Datenbank schon vorhanden, der Benutzer soll nur die Möglichkeit haben sie ein und auszublenden. Also vereinfacht ausgedrückt das Datagrid an sich stellt eine bestimmte maximale Anzahl von Spalten zur Verfügung oder alternativ auch ein SELECT *.

        Ich bin prinzipiell im Web unterwegs, Datagrid schien mir das einfachste. Hier habe ich die Eigenschaft die angezeigten Spalten zu definieren. Mir geht es jedoch eher um Vorschläge oder Hinweise auf vorhandene Möglichkeiten. Das ich mir "nur" pro Benutzer und Datagrid merken muss welche Spalten er in welcher Reihenfolge angezeigt bekommt. Die Frage ist auch wo ich mir diese Informationen "merke", also abspeichere. In der DB, Cookie o.ä.?! Soll beim nächsten mal wieder vorhanden sein. Und dann wie muss ich es abspeichern, welche Informationen benötige ich noch?

        Comment


        • #5
          Hallo,

          Ich bin prinzipiell im Web unterwegs,
          diese wichtige Info bringst du erst jetzt Bisher dachten wir es geht um WinForms. Hab das Thema daher auch nach ASP.net verschoben.

          Zum Speichern der Einstellungen gibts es dort die "UserProfiles" (Benutzerprofile). Suche mal danach.

          Zum DataGrid kann ich leider nicht mehr sagen.


          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            Var 1. Mit Postback auf der Serverseite. Erstelle z.B. ein ASp-Button "Spalte hinzufügen" und Fülle dein Grid im Klick-Ereigniss mit gewünsten spalten.

            Var2. ClientSeitig mit JavaScript. Jeder Grid wird in eine html-Tabelle gerendert. Dabei kann man auch klienseitige spaltenID's definieren. Dann über die SpaltenID's und style-visibility kann man die Spalten aus und einblenden.
            Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

            Comment


            • #7
              hallo,
              var 1.... Kann ich von meinem Grid alle Spalten abrufen die ich prinzipiell zur Verfügung habe oder muss ich dies über eine zweite Abfrage realisieren indem ich das gleiche Statement verwende? Also ich meine auch wenn die Spalten in einer Standardansicht für die Ausgangssituation ausgeblendet sind.

              Wie kann das serverseitige einund ausblenden geschehen? Kann ich auf visible der Spalte gehen oder ist etwas mehr notwendig?

              Comment


              • #8
                Var 1.1.
                Code:
                MyGridView.Columns[0].Visible = true;
                Var 1.2

                Code:
                Public Sub myGridView_OnRowCreated(ByVal sender As Object, ByVal e As _
                       Web.UI.WebControls.GridViewRowEventArgs) Handles myGridView.RowCreated
                
                  e.Row.Cells(0).Visible = False
                End Sub
                Var 1.3
                Code:
                protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
                {
                e.Row.Cells[0].Visible = false;
                
                }
                Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

                Comment

                Working...
                X