Entwickler-Ecke

WinForms - DataGrid optimale Breite


foxy - Di 15.07.08 09:28
Titel: DataGrid optimale Breite
Hallo Leute,
bin nun seit insg. 5h am suchen aber leider bisher noch kein brauchbares Ergebnis gefunden.

Also zum Problem, ich fülle ein Datagrid mit einer DataTable, was soweit auch gut mehr oder weniger gtu klappt, aber das ist ein anderes Problem.
Nun erscheint das Ergebnis auch in der DataGrid, aber die Columns sind recht klein und es ist noch sehr viel platz bis zum rand des Datagrid. Kann ich das irgendwie ausfüllen ? Das ich sage, da ich nur 2 Columns habe teile die breite des datagrid durch 2 und mache das selbst ?
Oder kann ich irgendwo die breite der Colums angeben ? Das ich das dann eben manuell die pixel, also die width verändere ? Bisher habe ich nichts gefunden, im internet wird meist imme rnur beschrieben wie ich etwas anzeigen lasse. Die veränderungen an Dg werden auch nur plastisch und wenn für pages gezeigt.

Hoffe jmd versteht das Problem, so zu sagen will ich einfach mein Datagrid mit den Rows ausgefüllt haben (von der breite her )

greetz
Foexle

p.s.: Hab im Netz auch etwas gefunden mit DataGridColumnStyle verknüpft mit TableSytel, was aber auch nicht so recht funktioniert hat.


JüTho - Di 15.07.08 10:16

Das einfachste dürfte DataGrid.PreferredColumnWidth sein. Jürgen


foxy - Di 15.07.08 10:27

huhu :>

danke für die schnell antwort, leider gibt es nur
.PrefferedRowHeight
:(


JüTho - Di 15.07.08 11:53

Soso, das gibt es nicht? Den fett gedruckten Teil bei
user profile iconJüTho hat folgendes geschrieben:
Das einfachste dürfte DataGrid.PreferredColumnWidth sein. Jürgen

habe ich per Copy/Paste aus der SDK-Doku/MSDN einfach kopiert. Also gibt es das bei meinem NET 2.0 auf jeden Fall in der Doku. Vielleicht solltest Du auch Copy/Paste verwenden und nicht selbst tippen (doppel-f und doppel-r beachten)? Jürgen


foxy - Di 15.07.08 11:58

ja das gibts in der hinsicht nicht weil ich ein tool für ein pda programmiere und ich nehmen mal an, dass das eine abgespeckte version der lib ist.

Ich hab es ja gerade versucht :> so ist es ja nicht ;)


Christian S. - Di 15.07.08 12:06

user profile iconfoxy hat folgendes geschrieben:
ja das gibts in der hinsicht nicht weil ich ein tool für ein pda programmiere

Das entwickelt sich langsam zu einem Running Gag ... :roll:


foxy - Di 15.07.08 15:15

Wiso running gag?

Also für die, die das hier suchen und wissen wollen wie das geht:

Kurzanleitung


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
public void anzeigen()
{

 DataTable dt = new DataTable("Custom");
 dt.Columns.Add("etwas");
 dt.Columns.Add("etwas2");
 DataRow dr ;

  while ( irgendwas ) 
  {
     dr = dt.NewRow();
     dr["etwas"] = value1;
     dr["etwas2"] = value2;
     dt.Rows.Add(dr);    
  }
  dg_ar.DataSource = dt.DefaultView;
}

das wäre die routine um die table zu füllen.
Nun aber zu dem problem mit der breite


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
private void addCustomDataTableStyle()
        {
            DataGridTableStyle ts = new DataGridTableStyle();
            ts.MappingName = "Custom";

            DataGridColumnStyle dgc = new DataGridTextBoxColumn();
            dgc.MappingName = "etwas";
            dgc.HeaderText = "etwas";
            dgc.Width = 100;
            ts.GridColumnStyles.Add(dgc);

            DataGridColumnStyle dgc2 = new DataGridTextBoxColumn();
            dgc2.MappingName = "etwas2";
            dgc2.HeaderText = "etwas2";
            dgc2.Width = 75;
            ts.GridColumnStyles.Add(dgc2);

            dg_ar.TableStyles.Add(ts);
        }

das muss aufgerufen werden, nachdem das DataGrid gebaut wurde also in der Form.Designer.cs

so hats bei mir geklappt

greetz


Christian S. - Di 15.07.08 15:19

user profile iconfoxy hat folgendes geschrieben:
Wiso running gag?

Es kommt in letzter Zeit häufiger vor, dass Leute mit dem Compact Framework arbeiten, aber das nicht dazu sagen.

user profile iconfoxy hat folgendes geschrieben:
das muss aufgerufen werden, nachdem das DataGrid gebaut wurde also in der Form.Designer.cs

Das dürfte eigentlich besser in der Form.cs im Konstruktor nach dem Aufruf von InitializeComponent aufgehoben sein. Die Form.Desigenr.cs ist eigentlich für den Programmierer tabu.


foxy - Di 15.07.08 15:24

wiso sollte der tabu sein ? :> ... das ist wie ein include in die Form.cs ... also kann ich da doch auch rumschreiben ... naja :>
ansichtssache :)

ahso ja ... ja wie gesagt ich wusste nit das es da so viele unterschiede gibt


Christian S. - Di 15.07.08 15:30

user profile iconfoxy hat folgendes geschrieben:
wiso sollte der tabu sein ? :> ... das ist wie ein include in die Form.cs ...

Du musst mir nicht erklären was eine partial class ist :roll:

user profile iconfoxy hat folgendes geschrieben:
also kann ich da doch auch rumschreiben ... naja :>

Hast Du Dich mal gefragt, warum die Datei das Wort Designer im Namen trägt? Weil sie für den Designer da ist! Und jede Änderung die Du dort machst, kann durch den Designer wieder zunichte gemacht werden!


foxy - Di 15.07.08 15:37

wus echt ? das wusst ich nit -.-
oh man ... genau deswegen hasse ich dieses klicki klicki