SAPUI5 StandardListItem сортировать по выбранным - PullRequest
0 голосов
/ 19 июня 2019

У меня есть SelectDialog для одного из всплывающих окон.Внутри этого я отображаю данные, используя StandardListItem.

В списке отображается более 2000 записей.Однако загрузка данных занимает много времени, поэтому я установил порог в 50. Когда пользователь открывает поповер, он покажет первые 50 записей, после прокрутки вниз, следующий набор из 50 записей и т. Д.

Теперь проблема заключается в том, что когда пользователь ищет запись (например, «ABC»), этот ABC может находиться на позиции 500 в списке.Он выбирает ABC, закрывает popover, а затем снова открывает его, он не может видеть ABC (потому что ABC отсутствует в первых 50 записях).Ему нужно прокрутить вниз 6 раз, чтобы увидеть данные.

То, чего я хочу достичь , это когда пользователь выбирает записи, он автоматически переходит в верхнюю позицию.UI5 SelectDialog ( UI5 Demo Kit ) не предоставляет эту функциональность, поскольку поддерживает только одностороннюю привязку . 1012 * Помогите ли вы в этом?Заранее спасибо.

Мой fragement.XML код:

<SelectDialog 
id="idSel" 
growingThreshold="50" 
growing="true"
showClearButton="true"
items="{data>AllItems}" 
multiSelect="true" 
noDataText="Not Found"
liveChange="handleSearch" 
title="Choose"
autoAdjustWidth="true" 
growingScrollToLoad="true">

     <StandardListItem id="idItem" description="{data>AllDataId})"
     title="{data>Title}" type="Active"/>

</SelectDialog>

Ответы [ 2 ]

1 голос
/ 21 июня 2019

rememberSelections будет держать опции отмеченными / не отмеченными, но «ABC» все еще будет в позиции 500. Я не думаю, что стандартный элемент управления sap.m.SelectDialog имеет способ сделать это.

Я вижу несколько вариантов:

  • Если выбор запрашивается откуда-то (OData?), Вы можете обогатить прочитанные параметры тем, выбраны ли они для этой цели или нет.Затем добавьте сортировщик в список, который сортирует по выбранному вначале (https://sapui5.hana.ondemand.com/#/api/sap.ui.model.Sorter).. Вы также можете сделать это в пользовательском интерфейсе при чтении данных списка сразу, но вы уже сказали, что делаете это вПакеты по соображениям производительности.
  • Если манипулирование бэкендом не сработает, вы можете создать собственный элемент управления, который в основном представляет собой sap.m.Dialog с двумя sap.m.Lists друг над другом, чтобы реплицироватьВы описываете. В верхней части отображаются выбранные элементы, а затем в нижней части - стандартный список.
  • Если мы посмотрим, как другие пользовательские интерфейсы управляют множественным выбором, на самом деле это два списка рядом друг с другом.просто перемещая элемент с одной стороны на другую (кнопки между ними или перетаскивая). Таким образом, вы всегда сохраняете контекст выбранного, одновременно ища другой для выбора. Я недавно реализовал это сам для выбора нескольких вариантов издлинный список.
  • В качестве альтернативы, не беспокойтесь о множественном выборе в диалоговом окне, а просто сохраните выбранное состояние в sap.m.MultiInput как sap.m.Tokens.Это, вероятно, наименьшая работа из всех.
1 голос
/ 19 июня 2019

Вы можете попытаться установить RememberSelections = true, чтобы сохранить текущий выбор и загрузить это состояние при повторном открытии диалога.

<SelectDialog 
id="idSel" 
rememberSelections="true"
growingThreshold="50" 
growing="true"
showClearButton="true"
items="{data>AllItems}" 
multiSelect="true" 
noDataText="Not Found"
liveChange="handleSearch" 
title="Choose"
autoAdjustWidth="true" 
growingScrollToLoad="true">

     <StandardListItem id="idItem" description="{data>AllDataId})"
     title="{data>Title}" type="Active"/>

</SelectDialog>
...