Laden...

Automatisch generierte Spalte im DataGrid löschen

Erstellt von Cuin vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.215 Views
C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren
Automatisch generierte Spalte im DataGrid löschen

Hallo,

weiß jemand von euch, wie man die automatisch generierte Spalte eines Datagrids löschen kann?

Wenn ich meinem datagrid eine tabelle mit zwei spalten als datasource angebe, dann werden die zwei spalten zwar schön angezeigt, aber es wird noch eine dritte (leere) spalte automatisch hinzugefügt... wie krieg ich die weg?

Bei den Zeilen gibt es so einen ähnlichen effekt, bloss kann man die zusätzlich hinzugefügte zeile mit CanUserAddRows = false oder so ähnlich löschen...

mfg Cuin

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo Cuin,

du kannst ja einfach das AutoPopulateColumns auf False setzen und dir selbst die Spalten definieren.
Damit kannst du noch den Header usw. setzen wie es dir gefällt.

Wieso du eine dritte leere Spalte hast kann ich dir so ohne Details auch nicht sagen.

Grüsse
Michael

C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren

Ich wollte das eigentlich so in der Art realisieren:

datagrid.DataContext = dataset.Tables["Test"];

Das klappt auch wunderbar... bloss habe ich dann immernoch eine zusätzliche leere spalte, die einfach unschön ist....

Vllt ist der Ausdruck "zusätzliche Spalte" auch schlecht ausgedrückt... ich kann NICHT per datagrid.columns[index der letzten spalte] auf die letzte spalte zugreifen... die letzte spalte ist somit quasi nur ein platzhalter...

evtl. würde es auch reichen die weite der "vorletzten" spalte auf "fill" zu setzen, so wie es in winforms möglich war...
Leider funktioniert das hier aber nicht:

datagrid.Columns[1].Width = '*';

Hat jemand eine idee wie ich das machen könnte?

D
216 Beiträge seit 2009
vor 13 Jahren

Das müsste die Eigenschaft AllowUserToAddRows oder irgendwas in der Richtung sein, da macht der immernoch eine Zeile unten dran, um dem User die Möglichkeit zu bieten, neue Zeilen hinzuzufügen. Musst nochmal gucken wie die genau heißt, grad kein VS zu Hand...

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo Cuin,

wie gesagt ist mir nicht bewusst wieso dir die dritte Spalte angezeigt wird.
Vermutlich hast du in deinem DataSet eine überflüssige Spalte drinnen.

Definiere die Spalten einfach selbst (so wie ich es vorher erklärt habe).
Und damit ist das Problem schon so gut wie gelöst.

Gruss
Michael

C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren

Ich habe es jetzt mal so versucht, wie du vorgeschlagen hattest:

DataGridTextColumn test = new DataGridTextColumn();
                    test.Header = "TestHeader";
                    datagrid.Columns.Add(test);

Leider hatte das keine Auswirkungen...

Ich habe hier mal ein bild angehängt, damit ihr sehen könnt, was ich meine:
(das rote kästchen zeigt nur, wo die spalte aufhört, weil man das so schlecht sieht)

C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren

Habe ein Workaround entwickelt:

Man setzt einfach die Breite der letzten Spalte auf "IsStar":

datagrid.Columns[1].Width = new DataGridLength(1.0, DataGridLengthUnitType.Star);

Das hat zur Folge, dass die letzte spalte (damit meine ich die letzte spalte von meiner Tabelle und nicht die automatisch generierte platzhalter-spalte) den rest des verfügbaren platzes in anspruch nimmt, und somit diese automatisch generierte spale verschwindet.

mfg Cuin

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo Cuin,

warum erstellst du die UI nicht deklarativ in XAML? Ist doch viel einfacher als der direkte Weg über C#-Code.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren

Weil die Tabellen ja erst zur Laufzeit generiert werden und ich somit nicht weiß, wieviele spalten mein Datagrid hat, es soll nur die letzte spalte den verfügbaren platz einnehmen.
Oder geht das auch mit wenig aufwand per xaml?

Das datagrid wird dynamisch in abhängigkeit des gewählten knotens eines treeviews gefüllt.