Хобрук: Ваш путь к мастерству в программировании

Как предотвратить группу «По умолчанию» в ObjectListView после события ModelDropped?

Я пытаюсь создать изменяемый список остановок вдоль маршрутов в ObjectListView. Мой список правильно сгруппирован и отсортирован при инициализации. См. ссылку ниже:

Маршруты после инициализации правильно сгруппированы

Когда я перетаскиваю строку (независимо от того, находится ли она в той же группе или в другой группе), она перемещается в новую группу «По умолчанию». Смотри ниже:

Маршруты после перетаскивания, с Rt 2, Stop 4, перемещенными в группу «По умолчанию»

Я пробовал различные попытки обновления и прибегал к безрезультатно. Может кто-нибудь объяснить, почему это сгруппировано в «По умолчанию» и как это исправить? Спасибо!

Вот мой код полностью:

private void RouteEditor_Load(object sender, EventArgs e)
{
    Stop stop1 = new Stop();
    stop1 .Customer = "Test4";
    stop1 .Location = "10010";
    stop1 .Weight = 13;
    stop1 .StopNumber = 4;
    stop1 .Route = "Route 2";
    StopList.Add(stop1 );

    this.objectListView1.SetObjects(StopList);

    this.objectListView1.DragSource = new BrightIdeasSoftware.SimpleDragSource();
    this.objectListView1.DropSink = new BrightIdeasSoftware.RearrangingDropSink(false);      
}

private void objectListView1_ModelCanDrop(object sender, BrightIdeasSoftware.ModelDropEventArgs e)
{
    e.DropSink.CanDropBetween = true;
    e.DropSink.CanDropOnItem = false;

    if (e.TargetModel == null)
        e.Effect = DragDropEffects.None;
    else
        e.Effect = DragDropEffects.Move;
}

private void objectListView1_ModelDropped(object sender, BrightIdeasSoftware.ModelDropEventArgs e)
{
    if (e.TargetModel == null)
        return;

    Stop targetStop = e.TargetModel as Stop;
    foreach (Stop s in e.SourceModels)
        s.Route = targetStop.Route;
}              

Ответы:


1

Я не уверен в групповом механизме "По умолчанию". Возможно, OLV просто не знает, что делать с выпавшим предметом, потому что не переоценивает/не перестраивает группы после каждого выпадения.

Из руководства:

Пример: если элемент управления группирует учащихся по академическим оценкам, а пользователь перетаскивает учащегося с оценкой «неудовлетворительно» в группу «А+», программист несет ответственность за внесение соответствующих изменений в модель и перерисовку/перестроение элемента управления. так что действия пользователей имеют смысл.

29.08.2016

2

Я знаю, что этот вопрос задавали давно, но для всех, у кого есть такая же проблема, вот решение, которое я нашел, сработало для меня.

После прочтения некоторых обсуждений на форуме Objectlistview я обнаружил, что класс RearrrangeDropSink не работает с сгруппированными представлениями Objectlist, поэтому я переключился на использование объекта SimpleDropSink, и это сработало, больше нет группы «По умолчанию» — отброшенный элемент отбрасывается в ожидаемом месте в пределах группа.

Итак, для примера в вопросе измените:

this.objectListView1.DropSink = new BrightIdeasSoftware.RearrangingDropSink(false);

to

this.objectListView1.DropSink = new BrightIdeasSoftware.SimpleDropSink();
this.objectListView1.DropSink.CanDropOnItem = false;
18.08.2018
Новые материалы

Еженедельный выпуск React 75
Добро пожаловать в 75-й выпуск React Weekly, еженедельный обзор последних ссылок и руководств по React и React Native. Посетите Купить кофе , чтобы найти способы поддержать React Weekly, или..

(Почти) полнофункциональная реализация Gumbel MuZero в Джулии.
TLDR; Gumbel Muzero — это современный алгоритм обучения с подкреплением. Он достиг сверхчеловеческой производительности во многих настольных играх и даже, что более впечатляюще, в Atari..

Передача нейронного стиля в браузерах с использованием Angular и WebDNN
В последние годы глубокое обучение привлекло большое внимание из-за его безупречной производительности при обучении на обширных данных и высокой точности при выводе. Развертывание этих алгоритмов..

Шифр Цезаря в C
Шифр Цезаря  — один из самых простых и широко известных методов шифрования. Он включает в себя сдвиг каждой буквы в сообщении на определенное количество позиций в алфавите. В этой статье мы..

Исследовательский анализ данных (EDA)
Что такое ЭДА? Анализ данных, который ищет закономерности в данных, известен как исследовательский анализ данных. Это похоже на беглый просмотр данных, чтобы найти наиболее важные..

1x1 Convolution: демистификация
Чтобы пролить свет на концепцию операции свертки 1x1, которая представлена ​​в статье «Сеть в сети» Лин и др. и Google Inception Некоторое время назад я прочитал статью «Сеть в сети» (NiN),..

Лучшие расширения VS Code в 2022 году
Код ВС Лучшие расширения VS Code в 2022 году Список самых полезных расширений VS Code, которые вы можете использовать как разработчик в 2022 году Расширения находятся на рынке VS Code,..