Unterscheidung der Aufrufstelle von ITable.Rows

Hallo,

wir verwenden einen eigenen Dataprovider. Im Rahmen dessen habe ich eine Implementierung der ITable geschrieben.

Da die Aufbereitung der Daten teilweise etwas Zeit in Anspruch nehmen kann, würde ich gerne, wenn man im Designer den Pfeil vor der Tabelle klickt, in ITable.Rows eine leere Enumeration zurück geben, so dass die ITable.SchemaRow verwendet wird.

Meine Frage: Wie kann ich erkennen, ob der Aufruf von ITable.Rows aus dem Klick auf den Pfeil vor der Tabelle erfolgt oder weil die Tabelle tatsächlich dargestellt werden soll (z.B. in der Vorschau)?
Im zweiten Fall sollen natürlich die Daten geliefert werden…

Ergänzung: Wie gerade gemerkt wird ITable.Rows auch aufgerufen, wenn man den Entwurf eines Berichts öffnet.
Immer dann, wenn der Abruf der Daten eigentlich nicht notwendig ist würde ich diesen gerne vermeiden. Also immer dann, wenn ITable.SchemaRow reicht.

Mit Dank im Vorraus
Peter

Hallo,

habe mal einen einfachen Blick in die .NET Hilfe der Interfaces gewagt… was ich mir hier vorstellen kann ist, dass ggf. das zusätzlich noch das Interface ISupportTableOptions umgesetzt werden müsste. Da wird dann SetOption aufgerufen, bei dem man sich dann merken könnte, dass man gerade in einer “Info-Query” (siehe TableOption.IsForInfoQuery) steckt oder sowas. Vielleicht ist bei GetOption dann auch noch das TableOption.SchemaRowUsage interessant.

Sonst was mir noch einfallen würde: In der Enterprise Version von List & Label habe ich mal aufgeschnappt, dass man dort auch den .NET Source Code als Referenz bekommen würde. Dort würde ich mir sonst mal einen Datenprovider von denen genauer anschauen.

1 Like

Hallo,

Dank des Hinweises von Oliver habe ich es raus gefunden (im Quellcode):
Durch Setzen des Attributs
[SchemaRowUsageModeAttribute(combit.Reporting.DataProviders.SchemaRowUsageMode.Design)]
für die Klasse, die ITable implementiert, wird die Schema-Row so verwendet, wie man es erwartet.

Vielen Dank an @Oliver_Hambrecht !

Gruß
Peter

1 Like