DataGrid

LordDeath

Erfahrenes Mitglied
Hi

Wie kann ich bei einem DataGrid die Größe opimieren ?
d.h. Wie bei Excel wenn man auf die Spaten doppelklickt

Und Wie kann ich Spalten eines DataGrids verstecken ?

DarkGreetinx LordDeath
 
Verstecken kannst die Spalten, indem du die Width() der entsprechenden Spalte auf 0 setzt.

Vermutlich willst du unter anderem jedoch auch die Spaltenbreite an die Länge des Strings in der Zelle anpassen, richtig?

Wenn ja:
Nachdem Du den String nicht selber in die Zelle per GDI+ malst, dürfts ein bisserl schwierig werden. Hierzu gibt es jedoch eine Windows-API die du verwenden kannst. Müsst ich jetzt aber raussuchen ...

Nitro
 
Wie kann ich eine Spalte ansprechen?

Ich habe es so probiert:

DataGrid1["Spalte1"].Width = 0;

Aber da bringt mir der Compiler einen Error !

Hast du ne Ahnung wie das geht ?

DarkGreetinx LordDeath
 
Hi!

Verstecken kannst die Spalten, indem du die Width() der entsprechenden Spalte auf 0 setzt.
Das ist eine Möglichkeit, eine andere (und meiner Meinung nach auch sauberere ) Lösung, ist die Benutzung von "DataGridTableStyle". Schau Dir mal die Hilfe dazu an. Da kannst Du Spalten ausblenden. Ein kleines Beispiel (wieder mal in VB.NET):

Code:
Dim ts4 As DataGridTableStyle
ts4 = New DataGridTableStyle
ts4.MappingName = "Anfragen" 'Muß dem Tabellennamen im DataSet entsprechen, sonst funktioniert das nicht

Dim textColBankA As New DataGridTextBoxColumn

With textColBankA
          .MappingName = "Bank"  'Muß dem Spaltennamen der Orginaltabelle entsprechen
          .HeaderText = "Bank"  'Gibt die Spaltenüberschrift im DataGrid an
          .NullText = ""  'Gibt an welcher Wert im DG angezeigt wird wenn in der entsprechenden Spalte einer Datenzeile nichts enthalten ist (NULL)
          .Width = "110"  'Breite der Spalte im DataGrid
End With
ts4.GridColumnStyles.Add(textColBankA)

ts4.AlternatingBackColor = System.Drawing.Color.LemonChiffon
Me.myDataGrid.TableStyles.Add(ts4)
Me.ts4.GridLineColor = Color.RoyalBlue

'#### Noch zur Formatierung des DG's ############
With myDataGrid
                .BackColor = Color.GhostWhite
                .BackgroundColor = Color.SeaShell
                .BorderStyle = BorderStyle.None
                .CaptionBackColor = Color.RoyalBlue
                .CaptionFont = New Font("Tahoma", 10.0!, FontStyle.Bold)
                .CaptionForeColor = Color.Bisque
                .CaptionText = "Anfragen"
                .Font = New Font("Tahoma", 8.0!)
                .ParentRowsBackColor = Color.Lavender
                .ParentRowsForeColor = Color.MidnightBlue
End With
Das ist nur ein Beispiel, schau Dir aber mal die Hilfe zu diesem Thema an, da wirst Du viele schöne Sachen finden um das DataGrid zu formatieren. In dem Beispiel wird nur die Spalte "Bank" aus der Tabelle "Anfragen" angezeigt (dabei ist es vollkommen egal was in der SELECT-Anweisung steht!).

Für die automatische Spaltenbreitenanpassung (schönes Wort ;) ) brauch ich bei mir nix einstellen, zumindest hab ich nix gefunden, aber es funktioniert trotzdem. Einfach mit der Maus über den Spalten-Header fahren und auf der Grid-Line zwischen zwei Spalten sollte sich der Mauszeiger in einen <--> Pfeil verändern. Jetzt einen Doppelklick und die Spaltenbreite wird automatisch angepasst.

MfG
..::Six Dark::..
 
Hi

Erstmal schönen Dank

Aber das anpassen der Größe soll automatisch im Code geschehen !


DarkGreetinx LordDeath
 
Das dachte ich mir fast... ;)
Also ich hab noch keine Eigenschaft oder Funktion des DataGrids oder des DataGridTableStyle's gefunden, welche die automatsiche Anpassung vornimmt. Du könntest aber evtl. für jede Datenzeile in der angezeigten Datentabelle die Breite des Strings messen (die Funktionen dazu müßten im System.Drawing zu finden sein) und dann die Breite über den DataGridTableStyle anpassen.

MfG
..::SD::..
 
Bei dem verstecken mit

DataGrid.Width();

versteckt er mir da ganze DataGrid wie mache ich es da nur mit einer Spalte besser wo kann ich ihm sagen woas für eine Spalte er verstecken soll


DarkGreetinx LordDeath
 
Original geschrieben von LordDeath
Bei dem verstecken mit

DataGrid.Width();

versteckt er mir da ganze DataGrid wie mache ich es da nur mit einer Spalte besser wo kann ich ihm sagen woas für eine Spalte er verstecken soll.

Du hast wahrscheinlich die Spalte vergessen:

Code:
DataGrid["Spaltenname"].Width() = xxx;

MfG
..::SD::..
 
Wenn ich es so mache :

dataGrid1["Host"].Width() = 0;

Dann bringt er folgende Fehlermeldung :

F:\Projekte\C#\Bathory\Form1.cs(1045): Argument '1': cannot convert from 'string' to 'System.Windows.Forms.DataGridCell'

Hasst du ne Idee woran das liegen kann ?

DarkGreetinx LordDeath
 

Neue Beiträge

Zurück