Таблица Kendo (виджет Angular + jQuery): изменение огня после перезагрузки при размытии без изменений (A1 только тогда, Jquery

Программирование на jquery
Ответить
Anonymous
 Таблица Kendo (виджет Angular + jQuery): изменение огня после перезагрузки при размытии без изменений (A1 только тогда,

Сообщение Anonymous »

Я встраиваю таблицу пользовательского интерфейса Kendo (виджет jQuery) в компонент Angular. После сохранения я перезагружаю книгу через fromJSON(...). Если последнее сохраненное значение в A1 является числовым, просто фокусировка A1 и размытие (без изменений) запускает событие изменения сразу после перезагрузки. Этого не происходит с текстовыми значениями и, как правило, не с другими ячейками.
  • Введите 100 в A1 → зафиксируйте → измените срабатывает (ожидается).
  • Сохранить → вызов из JSON(workbook) для перезагрузки.
  • После перезагрузка, A1 выбирается автоматически и выравнивается по левому краю.
  • щелкните в другом месте (размытие) без изменения → изменить событие срабатывает (неожиданно).

    Код: Выделить всё

    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);
    }
    
    После перезагрузки листа значение в ячейке A1 автоматически выравнивается по левому краю и фокусируется. Когда фокус потерян, событие изменения запускается, даже если никаких изменений не было. обратитесь к изображению.
    Изображение

    Ожидается
    • Нет изменений при размытии, если значение ячейки фактически не изменилось.
    Любые рекомендации от Telerik по выравниванию активной ячейки электронной таблицы жизненный цикл с семантикой уровня приложения («экономить только на реальных изменениях»)?


Подробнее здесь: https://stackoverflow.com/questions/798 ... -on-blur-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»