Component One FlexGrid „column width“


Vorhin stand ich vor dem Problem, das mein FlexGrid beim erneuten zuweisen einer aktualisierten DataSource die vorher vom User eingestellte Spaltenbreite verwarf.

[csharp]_flexGrid.DataSource = _dataSet;[/csharp]

Eigentlich klar, weil die neue DataSource ja auch ganze andere Spalten haben kann, als die alte.
Was aber tun wenn es genau dieselben Spalten sind?

Das FlexGrid hat eine Methode die SetDataBinding heißt. Dieser Methode übergibt man das DataSource Objekt sowie den Tabellennamen der DataSource. Das interessante ist hier allerdings der dritte Parameter. Setzen wir diesen nämlich auf true wird das komplette Spaltenlayout – also auch die Breite – beibehalten.
Da das aber nur sauber funktioniert wenn schon eine DataSource angehängt war, muss vorher noch check gemacht werden.
[csharp]
// Die erste Tabelle aus dem DataSet soll die DataSource sein
_dataSet.Tables[0].TableName = „Table1“;
// Hat das FlexGrid noch keine DataSource
if (_flexGrid.DataSource == null)
_flexGrid.DataSource = _dataSet.Tables[0];
else // ansonsten
_flexGrid.SetDataBinding(_dataSet, „Table1“, true);
[/csharp]
Sei zum Schluss noch erwaehnt, dass dies bei einem DataTable Objekt nicht funktioniert. Deswegen habe ich ein DataSet genommen.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Antispam Captcha *