diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs
index cc8abb6095..2f4440b904 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelper.cs
@@ -31,6 +31,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
public string AutocompleteFilterParamName { get; set; }
+ public string AutocompleteSelectedItemName { get; set; }
+
+ public string AutocompleteSelectedItemValue { get; set; }
+
public AbpSelectTagHelper(AbpSelectTagHelperService tagHelperService)
: base(tagHelperService)
{
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
index 534801d126..7741807aae 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
@@ -1,4 +1,5 @@
-using Microsoft.AspNetCore.Mvc.Rendering;
+using Microsoft.AspNetCore.Mvc.Diagnostics;
+using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
@@ -85,6 +86,13 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
{
selectTagHelper.Items = GetSelectItems(context, output);
}
+ else
+ {
+ selectTagHelper.Items = new SelectListItem[]
+ {
+ new SelectListItem(TagHelper.AutocompleteSelectedItemName,TagHelper.AutocompleteSelectedItemValue,true)
+ };
+ }
var selectTagHelperOutput = await selectTagHelper.ProcessAndGetOutputAsync(GetInputAttributes(context, output), context, "select", TagMode.StartTagAndEndTag);
@@ -107,6 +115,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
output.Attributes.Add("data-autocomplete-display-property", TagHelper.AutocompleteDisplayPropertyName);
output.Attributes.Add("data-autocomplete-value-property", TagHelper.AutocompleteValuePropertyName);
output.Attributes.Add("data-autocomplete-filter-param-name", TagHelper.AutocompleteFilterParamName);
+ output.Attributes.Add("data-autocomplete-selected-item-name", TagHelper.AutocompleteSelectedItemName);
+ output.Attributes.Add("data-autocomplete-selected-item-value", TagHelper.AutocompleteSelectedItemValue);
}
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js
index 4489a234c1..431d9093f7 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js
@@ -80,6 +80,18 @@
var displayValue = $(this).data("autocompleteValueProperty");
var itemsPropertyName = $(this).data("autocompleteItemsProperty");
var filterParamName = $(this).data("autocompleteFilterParamName");
+ var selectedText = $(this).data("autocompleteSelectedItemName");
+ var name = $(this).attr("name");
+ var selectedTextInputName = name.substring(0, name.length - 1) + "_Text]";
+ var selectedTextInput = $('', {
+ type: 'hidden',
+ id: selectedTextInputName,
+ name: selectedTextInputName,
+ });
+ if (selectedText != "") {
+ selectedTextInput.val(selectedText);
+ }
+ selectedTextInput.insertAfter($select);
$select.select2({
ajax: {
url: url,
@@ -109,6 +121,9 @@
},
width: '100%'
});
+ $select.on('select2:select', function (e) {
+ selectedTextInput.val(e.params.data.text);
+ });
});
}
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/CachedObjectExtensionsDtoService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/CachedObjectExtensionsDtoService.cs
index 651f3ed93e..22102f82c5 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/CachedObjectExtensionsDtoService.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/CachedObjectExtensionsDtoService.cs
@@ -140,8 +140,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
},
OnTable = new ExtensionPropertyUiTableDto
{
- IsVisible = propertyConfig.UI.OnTable.IsVisible &&
- propertyConfig.UI.Lookup.Url.IsNullOrEmpty()
+ IsVisible = propertyConfig.UI.OnTable.IsVisible
},
Lookup = new ExtensionPropertyUiLookupDto
{
diff --git a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/Modularity/EntityExtensionConfiguration.cs b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/Modularity/EntityExtensionConfiguration.cs
index d03696b642..384fc355f9 100644
--- a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/Modularity/EntityExtensionConfiguration.cs
+++ b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/Modularity/EntityExtensionConfiguration.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Collections.Immutable;
using JetBrains.Annotations;
+using Volo.Abp.Localization;
namespace Volo.Abp.ObjectExtending.Modularity
{
@@ -47,14 +48,29 @@ namespace Volo.Abp.ObjectExtending.Modularity
propertyName,
() => new ExtensionPropertyConfiguration(this, propertyType, propertyName)
);
-
configureAction?.Invoke(propertyInfo);
NormalizeProperty(propertyInfo);
+ AddLookupProperty(propertyInfo);
+
return this;
}
+ private void AddLookupProperty(ExtensionPropertyConfiguration propertyInfo)
+ {
+ if (!propertyInfo.UI.Lookup.Url.IsNullOrEmpty())
+ {
+ var lookupPropertyName = $"{propertyInfo.Name}_Text";
+ var lookupPropertyInfo = Properties.GetOrAdd(
+ lookupPropertyName,
+ () => new ExtensionPropertyConfiguration(this, typeof(string), lookupPropertyName)
+ );
+ lookupPropertyInfo.DisplayName = propertyInfo.DisplayName ?? new FixedLocalizableString(propertyInfo.Name);
+ propertyInfo.UI.OnTable.IsVisible = false;
+ }
+ }
+
[NotNull]
public virtual ImmutableList GetProperties()
{