VSTO Excel-Template und Databinding an NamedRange

10/07/2008 - 09:01 von Robert Milrath | Report spam
Hallo NG,

ich versuche mich an VSTO2008. Dort habe ich ein Exceltemplate erstellt. In
diesem habe ich drei NamedRanges hinzugefügt. Zusàtzlich habe ich dem
Workbook ein ActionPane mit drei Textboxen hinzugefügt.

Nun habe ich mir eine Klasse erstellt, mit drei Properties (Laenge, Breite,
Flaeche=Breite * Laenge).

Die Datenbindung habe ich wie folgt vorgenommen:

ActionPane:
this.breiteTextBox.DataBindings.Add("Text",
Globals.ThisWorkbook.testBindingSource, "Breite", false);
this.laengeTextBox.DataBindings.Add("Text",
Globals.ThisWorkbook.testBindingSource, "Laenge", false);
this.flaecheTextBox.DataBindings.Add("Text",
Globals.ThisWorkbook.testBindingSource, "Flaeche", false);

WorkSheet:
this.breiteNamedRange.DataBindings.Add("Value2",
Globals.ThisWorkbook.testBindingSource, "Breite", false);
this.laengeNamedRange.DataBindings.Add("Value2",
Globals.ThisWorkbook.testBindingSource, "Laenge", false);
this.flaecheNamedRange.DataBindings.Add("Value2",
Globals.ThisWorkbook.testBindingSource, "Flaeche", false);


D. h. die Datenbindung für NamedRange und TextBox ist gleich. Nehme ich aber
Änderungen in dem Named Range vor, passiert nichts.
Nehme ich die Änderungen an der TextBox vor, springt die Datenbindung an,
sowohl bei den Textboxen, als auch bei den NamedRanges.

NamedRange und Datenbindung, gibt es da besondere Einstellungen?

Ich bin für jede Hilfe dankbar.
Vielen Dank im voraus.

Grüße aus Freising,
Robert Milrath
 

Lesen sie die antworten

#1 Robert Milrath
10/07/2008 - 10:44 | Warnen spam
Hallo NG,

http://msdn.microsoft.com/en-us/lib...tbt99.aspx

und Automatically Updating the In-Memory Data Source geben die Antwort.

DataSourceUpdateMode bring nichts, ich muß WriteValue() ausführen. Beim
Laden der Arbeitsmappe ist noch null abzufangen.
try {
if (this.breiteNamedRange.DataBindings["Value2"] != null) {
this.breiteNamedRange.DataBindings["Value2"].WriteValue();
}
}
catch (Exception ex) {
ErrorHandler.ShowMessageBox(ex);
}

Ist ganz schön aufwendig. Kennt jeman einen besseren Weg?

Vielen Dank im voraus.

Grüße aus Freising,
Robert Milrath


"Robert Milrath" wrote:

Hallo NG,

ich versuche mich an VSTO2008. Dort habe ich ein Exceltemplate erstellt. In
diesem habe ich drei NamedRanges hinzugefügt. Zusàtzlich habe ich dem
Workbook ein ActionPane mit drei Textboxen hinzugefügt.

Nun habe ich mir eine Klasse erstellt, mit drei Properties (Laenge, Breite,
Flaeche=Breite * Laenge).

Die Datenbindung habe ich wie folgt vorgenommen:

ActionPane:
this.breiteTextBox.DataBindings.Add("Text",
Globals.ThisWorkbook.testBindingSource, "Breite", false);
this.laengeTextBox.DataBindings.Add("Text",
Globals.ThisWorkbook.testBindingSource, "Laenge", false);
this.flaecheTextBox.DataBindings.Add("Text",
Globals.ThisWorkbook.testBindingSource, "Flaeche", false);

WorkSheet:
this.breiteNamedRange.DataBindings.Add("Value2",
Globals.ThisWorkbook.testBindingSource, "Breite", false);
this.laengeNamedRange.DataBindings.Add("Value2",
Globals.ThisWorkbook.testBindingSource, "Laenge", false);
this.flaecheNamedRange.DataBindings.Add("Value2",
Globals.ThisWorkbook.testBindingSource, "Flaeche", false);


D. h. die Datenbindung für NamedRange und TextBox ist gleich. Nehme ich aber
Änderungen in dem Named Range vor, passiert nichts.
Nehme ich die Änderungen an der TextBox vor, springt die Datenbindung an,
sowohl bei den Textboxen, als auch bei den NamedRanges.

NamedRange und Datenbindung, gibt es da besondere Einstellungen?

Ich bin für jede Hilfe dankbar.
Vielen Dank im voraus.

Grüße aus Freising,
Robert Milrath

Ähnliche fragen