Root Cause des ursprünglich gemeldeten Bugs gefunden: Reset_Current() wurde als allererste Aktion in Item_Scope aufgerufen, NOCH BEVOR die angeklickte Zeile ermittelt wird. Reset_Current() ruft DT_CURR_WF_ITEMS.Clear() auf - und DT_CURR_WF_ITEMS ist über bindsourcegrid direkt die Datenquelle von GridControlWorkflows/GridViewWorkflows (siehe Bindings z.B. frmMain.vb:1445-1446). Das Clear() leert also synchron genau das Grid, in dem gerade doppelgeklickt wurde, bevor CalcHitInfo/FocusedRowHandle überhaupt ausgewertet werden - beide sind danach zwangsläufig InvalidRowHandle, da schlicht keine Zeilen mehr existieren. Das erklärt auch die im Log beobachteten doppelten SaveGridLayout-Aufrufe (Grid reagiert auf die Leerung) und das spätere "has no children" beim Rendern der Gruppenzeilen. Der zuvor implementierte FocusedRowHandle-Fallback in Item_Scope war dadurch wirkungslos, da auch FocusedRowHandle zu diesem Zeitpunkt ungültig ist. Fix: Den verfrühten Reset_Current()-Aufruf entfernt. Die davon zurückgesetzten Felder werden im weiteren Verlauf ohnehin frisch gesetzt (CURRENT_JUMP_DOC_GUID erneut bei Zeile ~2735, CURRENT_ProfilGUID durch Load_Profil_from_Grid selbst). Der zweite, bestehende Reset_Current()-Aufruf im GRUPPE-Zweig (nach erfolgreicher Zeilenauflösung, vor Load_Profil_from_Grid) bleibt unverändert bestehen und deckt den eigentlich benötigten Reset weiterhin ab. Enthält zusätzlich eine Diagnose-Logzeile in GridViewWorkflows_MouseDown, die beim Testen ergänzt wurde. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Here's the improved README.md file incorporating the new content while maintaining the existing structure and coherence:
Project Title
Overview
Provide a brief description of the project, its purpose, and its main features.
Installation
Instructions on how to install and set up the project.
Usage
How to use the project, including code examples and explanations.
DataColumn.Expression (Formelsprachen-Übersicht)
Die dynamischen Grid-Formeln verwenden die ADO.NET DataColumn.Expression-Sprache. Spalten werden immer über den Spaltennamen referenziert (in eckigen Klammern).
Grundoperatoren
| Typ | Ausdruck | Beispiel |
|---|---|---|
| Arithmetik | + - * / |
[A] * [B] |
| Vergleich | = <> > >= < <= |
[MENGE] > 0 |
| Logik | AND OR NOT |
[A] > 0 AND [B] < 10 |
| Klammern | (...) |
([A] + [B]) * 2 |
String-Verkettung
| Ausdruck | Beispiel |
|---|---|
+ |
[VORNAME] + ' - ' + [NACHNAME] |
Convert |
Convert([NUMMER], 'System.String') |
Bedingungen
| Ausdruck | Beispiel |
|---|---|
IIF |
IIF([A] = 'Harry', 'Blume', 'Tier') |
Häufige Funktionen
| Funktion | Beispiel |
|---|---|
Len |
Len([TEXT]) |
Trim |
Trim([TEXT]) |
Substring |
Substring([TEXT], 0, 3) |
IsNull |
IsNull([WERT], 0) |
Convert |
Convert([WERT], 'System.Double') |
Beispiele (FORMULA_EXPRESSION)
- Multiplikation:
[MENGE] * [PREIS] - Addieren:
[A] + [B] - Division:
[A] / [B] - Text zusammensetzen:
[SAKNR] + ' - ' + [KST] - Bedingung:
IIF([STATUS] = 'X', 'OK', 'NOK')
Contributing
Guidelines for contributing to the project.
License
Information about the project's license.
Contact
How to contact the project maintainers for questions or support.
In this improved version, the new content has been seamlessly integrated into the existing structure of the README file. The sections are clearly defined, and the flow of information is logical, making it easy for users to understand the functionality of DataColumn.Expression and how to use it effectively.