Syncfusion Grid DateTimePicker отправляет смещение значения на 6 часов (проблема с часовым поясом) при пакетном редактирHtml

Программисты Html
Ответить
Anonymous
 Syncfusion Grid DateTimePicker отправляет смещение значения на 6 часов (проблема с часовым поясом) при пакетном редактир

Сообщение Anonymous »

Я использую компонент Grid в своем проекте .NET 8, который динамически настраивает, отображает и редактирует столбцы таблицы SQL. Пока что он работает впечатляюще.
На данный момент я столкнулся только с одной проблемой. Когда я иду редактировать значение, которое использует Syncfusion.EJ2.Calendars.DateTimePicker, если вам интересно, данные для строк — это свойство:
public IEnumerable Data { get; set; }

Когда я подхожу к таблице, она отображает свойство даты. Даже когда я нажимаю, чтобы отредактировать ее, вношу изменения и снимаю щелчок по ячейке, все по-прежнему хорошо. Проблема возникает, когда я нажимаю кнопку «Обновить», чтобы фактически выполнить редактирование. Действие получает дату, и я вижу, что дата смещена вперед на 6 часов. Если после обновления я обновлю страницу, я увижу добавленное время на 6 часов. Итак, если дата была 2025-12-31 00:00:00 ​и я ввел 2025-12-31 06:00:00, ​при обновлении и обновлении отображается 2025-12-31 12:00:00.
Я пытался добавить несколько вариантов serverTimezoneOffset = 0 ​ и = 6​, но это делало ситуацию еще более странной. Например, значение будет отображаться правильно, но двойной щелчок для редактирования приведет к его увеличению еще до того, как я что-нибудь напишу. Затем я снова дважды щелкаю по нему, и оно увеличивается еще раз.
Я действительно хочу, чтобы отображалась точная дата, полученная из базы данных (как сейчас), и отредактированное значение было отправлено точно так, как я набрал.
Что здесь происходит?
HTML-представление:
@section Scripts {
    
        document.addEventListener('DOMContentLoaded', () => {
            var grid = document.getElementById('Grid').ej2_instances[0];
            grid.dataSource = new ej.data.DataManager({
                json: grid.dataSource,
                batchUrl: '@Url.Action(nameof(DataProcessingController.Batch), ControllerHelper.GetName(), new { PipelineRunId = Model.PipelineRunId })',
                adaptor: new ej.data.RemoteSaveAdaptor()
            });
        });

        function onActionComplete(args) {
            if (args.requestType === 'batchsave')
                toastr.success('Saved.');

            if (args.requestType === 'paging')
                localStorage.setItem('gridPageSize', this.pageSettings.pageSize);
        }

        function onActionFailure() {
            toastr.error('Update failed.');
        }

        function onCreated() {
            const savedPageSize = localStorage.getItem('gridPageSize');

            if (savedPageSize)
                this.pageSettings.pageSize = parseInt(savedPageSize);
        }
    
}

    Processing
    @Model.IssueMessage



    
    
    
    
        @foreach (var col in Model.ColumnProperties)
        {
            bool isPrimary = col.Name == Model.PrimaryKeyColumnName;
            bool isReadOnly = isPrimary || col.Name == "PipelineRunIdentifier" || col.Name == "SourceFileName";
            string editType = "defaultedit";
            string? format = null;
            string? type = null;
            var textAlign = TextAlign.Left;
            var displayAsCheckBox = false;
            var validationRules = new Dictionary { { "required", !col.IsNullable } };
            var editParams = new object();

            if (col.DataType is "decimal" or "float" or "numeric")
            {
                // ... settingsvv
            }
            else if (col.DataType is "int" or "bigint")
            {
                // ... settings
            }
            else if (col.DataType is "bit" or "boolean")
            {
                // ... settings
            }
            else if (col.DataType is "datetime" or "datetime2" or "smalldatetime")
            {
                // TODO issue with date time.
                editType = "datetimepickeredit";
                format = "yyyy-MM-dd HH:mm:ss";
                type = "date";
                textAlign = TextAlign.Right;
                editParams = new Syncfusion.EJ2.Calendars.DateTimePicker {
                    ShowClearButton = false,
                    Format = "yyyy-MM-dd HH:mm:ss"
                };
            }
            else if (col.DataType is "date")
            {
                // ... settings
            }
            else if (col.DataType is "nvarchar" or "varchar" or "char" or "nchar")
            {
                // ... settings
            }
            
            
        }
    



Подробнее здесь: https://stackoverflow.com/questions/799 ... zone-issue
Ответить

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

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

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

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

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