Kendo-Tabelle (Angular + jQuery-Widget): Änderung wird nach Neuladen bei Unschärfe ohne Änderung ausgelöst (A1 nur, wennJquery

JQuery-Programmierung
Anonymous
 Kendo-Tabelle (Angular + jQuery-Widget): Änderung wird nach Neuladen bei Unschärfe ohne Änderung ausgelöst (A1 nur, wenn

Post by Anonymous »

Ich bette das Kendo UI Spreadsheet (jQuery-Widget) in eine Angular-Komponente ein. Nach dem Speichern lade ich die Arbeitsmappe über fromJSON(...) neu. Wenn der letzte gespeicherte Wert in A1 numerisch ist, löst nur das Fokussieren von A1 und das Verwischen (keine Änderungen) das Änderungsereignis direkt nach dem Neuladen aus. Dies geschieht nicht für Textwerte und normalerweise nicht für andere Zellen.
  • Geben Sie 100 in A1 ein → Festschreiben → Änderung wird ausgelöst (erwartet).
  • Speichern → Aufruf von fromJSON(workbook) zum Neuladen.
  • Nach dem Neuladen A1 ist automatisch ausgewählt und erscheint linksbündig.
  • Klicken Sie auf A1 (Fokus) → klicken Sie auf eine andere Stelle (Unschärfe) ohne zu ändern → Änderung Ereignis wird ausgelöst (unerwartet).

    Code: Select all

    private loadKendoSpreadsheet(workbook?: Workbook): void {
    const kendoWorkbook = {
    ...convertWorkbookToKendo(workbook ?? {}),
    defaultCellStyle: { fontFamily: 'Roboto', fontSize: 12 },
    columnWidth: 64,
    rowHeight: 20
    };
    
    try {
    this.ignoreSpreadsheetChangedEvent = true;
    
    const $worksheet = kendo.jQuery(this.spreadsheetEl.nativeElement);
    let kendoSpreadsheet = $worksheet.data("kendoSpreadsheet");
    
    if (kendoSpreadsheet) {
    // Reload workbook
    kendoSpreadsheet.fromJSON(kendoWorkbook);
    
    } else {
    const options: any = {
    ...kendoWorkbook,
    toolbar: { /* omitted */ },
    change: () => { document.dispatchEvent(new Event('spreadsheetChanged')); },
    render: (e: any) => {
    document.dispatchEvent(new CustomEvent('spreadsheetRendered', { detail: e.sender }));
    }
    };
    kendoSpreadsheet = $worksheet.kendoSpreadsheet(options).data("kendoSpreadsheet");
    }
    } finally {
    this.ignoreSpreadsheetChangedEvent = false;
    }
    }
    
    @HostListener('document:spreadsheetChanged')
    public onSpreadsheetChanged() {
    if (this.ignoreSpreadsheetChangedEvent) return;
    this.worksheetForm.markAsDirty();
    }
    /**
    * Reset to the saved version of the worksheet
    */
    private resetChanges() {
    this.worksheetForm.reset(this.worksheet.description);
    this.canSaveUnchanged = false;
    this.loadKendoSpreadsheet(this.worksheet.workbook);
    }
    
    Nachdem das Arbeitsblatt neu geladen wurde, wird der Wert in Zelle A1 automatisch linksbündig ausgerichtet und fokussiert. Wenn der Fokus verloren geht, wird ein Änderungsereignis ausgelöst, obwohl keine Änderung vorgenommen wurde. Verweisen Sie auf das Bild.
    Image

    Erwartet
    • Keine Änderung-Ereignis bei Unschärfe, es sei denn, der Wert der Zelle hat sich tatsächlich geändert.
    Jede Anleitung von Telerik zum Ausrichten des aktiven Zellen-Commits der Tabellenkalkulation Lebenszyklus mit Semantik auf App-Ebene („Speichern nur bei echten Änderungen“)?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post