Laden...

[gelöst] DGV - ColumnType zur Laufzeit ändern ?

Erstellt von scrabbl vor 10 Jahren Letzter Beitrag vor 10 Jahren 806 Views
S
scrabbl Themenstarter:in
211 Beiträge seit 2010
vor 10 Jahren
[gelöst] DGV - ColumnType zur Laufzeit ändern ?

Hallo,

ich befülle ein DGV aus einer Datenbank:


SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
System.Data.DataTable table = new System.Data.DataTable();
adapter.Fill(table);

myDGV.DataSource = table;

Das Problem dabei ist das er eine der Spalten als Int64 anlegt, weil sie eben in der Datenbank eine Integer Spalte ist. Ich bräuchte hier aber eine String-Spalte.
Probiert hab ichs so zur Laufzeit:


Type columnType = myDGV.Columns[4].ValueType; //Hier ist der Typ Int64
myDGV.Columns[4].ValueType = typeof(string);
columnType = myDGV.Columns[4].ValueType; //Hier ist der Typ string

Dennoch lässt er mich keinen String in diese Spalte einfügen. Die Exception es handle sich um einen falschen Typ (Int64 würde erwartet) kommt dennoch.

Gibt es Möglichkeit dies umzustellen ? Oder wie könnte ich das sonst lösen ? Ausser die Datenbank auszulesen und das DGV von Hand zu befüllen...

Grüße

T
156 Beiträge seit 2012
vor 10 Jahren

Hallo scrabbl,

kannst Du nicht schon beim Abrufen der Daten das Feld per cast in einen String umwandeln?

select 
...
, cast(xyz as nvarchar(10)) as xyz
from ...

Viele Grüße,
telfa

S
scrabbl Themenstarter:in
211 Beiträge seit 2010
vor 10 Jahren

Danke für deine Antwort.
Ja du hast Recht, so geht das natürlich auch, daran hab ich nicht gedacht. Jetzt funktioniert das auch wie gewollt 👍

Rein aus Interesse würde mich dann trotzdem noch interessieren ob mal den ValueType einer Column zur Laufzeit ändern kann.

Grüße

2.298 Beiträge seit 2010
vor 10 Jahren

Das sollte funktionieren, wenn du zuvor alle Inhalte der Spalte entfernst und dannach als String wieder einfügst. - Ich wage zu behaupten, soetwas schonmal gemacht zu haben.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

T
156 Beiträge seit 2012
vor 10 Jahren

Hallo noch einmal,

das geht schon. Es ist auch möglich nachträglich eine Spalte geben beispielsweise eine ComboBoxspalte auszutauschen. Das aber nur programmatisch, soweit ich weiß.

Viele Grüße,
telfa