From 323bd67d9c016a3d9426a33233407fc26b81688a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Fri, 9 Jan 2026 13:16:28 +0000 Subject: [PATCH 1/2] DropDownList: Allow null value (research) --- .../js/__internal/ui/drop_down_editor/m_drop_down_list.ts | 2 +- .../devextreme/js/__internal/ui/editor/m_data_expression.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts index 29986d3fdb47..d00163a625d7 100644 --- a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts +++ b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts @@ -383,7 +383,7 @@ class DropDownList< return selectedItem !== undefined ? Deferred().resolve(selectedItem).promise() // @ts-expect-error ts-error - : this._loadValue(value); + : this._loadValue(value, this.option('allowNullValue')); } _getPlainItems(items?) { diff --git a/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts b/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts index 369fb532d86d..d7bd420ba966 100644 --- a/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts +++ b/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts @@ -66,11 +66,11 @@ const DataExpressionMixin = extend({}, DataHelperMixin, { return this.option('valueExpr') || 'this'; }, - _loadValue(value) { + _loadValue(value, allowNullValue) { const deferred = Deferred(); value = this._unwrappedValue(value); - if (!isDefined(value)) { + if (!isDefined(value) && (value === null && !allowNullValue)) { return deferred.reject().promise(); } From 252e88837d3a2e00359000f69b91164dd7a73a17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Fri, 9 Jan 2026 13:53:26 +0000 Subject: [PATCH 2/2] fix(m_data_expression): Replace && with || --- .../js/__internal/ui/drop_down_editor/m_drop_down_list.ts | 2 +- .../devextreme/js/__internal/ui/editor/m_data_expression.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts index d00163a625d7..7ab9e4914d2e 100644 --- a/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts +++ b/packages/devextreme/js/__internal/ui/drop_down_editor/m_drop_down_list.ts @@ -383,7 +383,7 @@ class DropDownList< return selectedItem !== undefined ? Deferred().resolve(selectedItem).promise() // @ts-expect-error ts-error - : this._loadValue(value, this.option('allowNullValue')); + : this._loadValue(value, this.option('allowNullValue') ?? false); } _getPlainItems(items?) { diff --git a/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts b/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts index d7bd420ba966..bff735d2ee9d 100644 --- a/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts +++ b/packages/devextreme/js/__internal/ui/editor/m_data_expression.ts @@ -66,11 +66,11 @@ const DataExpressionMixin = extend({}, DataHelperMixin, { return this.option('valueExpr') || 'this'; }, - _loadValue(value, allowNullValue) { + _loadValue(value, allowNullValue = false) { const deferred = Deferred(); value = this._unwrappedValue(value); - if (!isDefined(value) && (value === null && !allowNullValue)) { + if (!isDefined(value) || (value === null && !allowNullValue)) { return deferred.reject().promise(); }