Steps to reproduce:
- Run the project;
- Login as 'Admin';
- Go to the 'Role' list view;
- Open the 'Default' role detail view;
- Open the 'Navigation Permission' tab.
- Open a filter popup.
Expected results:
The popup shows the navigation's display names.
Current results:
The popup shows full paths.
Workaround:
C#using DevExpress.Blazor;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Blazor.Editors;
using DevExpress.ExpressApp.Model.Core;
using DevExpress.ExpressApp.SystemModule;
namespace dxTestSolution.Module.Controllers;
public class GridViewControllerBlazor :ObjectViewController<ListView, DevExpress.Persistent.BaseImpl.PermissionPolicy.PermissionPolicyNavigationPermissionObject> {
protected override void OnViewControlsCreated() {
base.OnViewControlsCreated();
if(View.Editor is DxGridListEditor gridListEditor) {
gridListEditor.GridModel.CustomizeFilterMenu = testHandler;
}
}
private void testHandler(GridCustomizeFilterMenuEventArgs args) {
var navItems = GetNavigationItems();
foreach(var it in args.DataItems) {
var navItem = navItems.Where(ni => ((ModelNode)ni).Path == it.DisplayText).FirstOrDefault();
if(navItem != null) {
it.DisplayText = navItem.Caption;
}
}
}
private List<IModelNavigationItem> GetNavigationItems() {
List<IModelNavigationItem> recursionNavItems = new List<IModelNavigationItem>();
IEnumerable<IModelNavigationItem> navItems = ((IModelApplicationNavigationItems)Application.Model).NavigationItems.Items;
foreach(IModelNavigationItem item in navItems) {
recursionNavItems.AddRange(GetNavigationItemsRecursive(item));
}
return recursionNavItems;
}
private IEnumerable<IModelNavigationItem> GetNavigationItemsRecursive(IModelNavigationItem navItem) {
List<IModelNavigationItem> resultNavItems = new List<IModelNavigationItem>();
resultNavItems.Add(navItem);
foreach(IModelNavigationItem item in navItem.Items) {
resultNavItems.AddRange(GetNavigationItemsRecursive(item));
}
return resultNavItems;
}
}