Отображение списка непостоянных объектов в xaf

Я хочу показать список непостоянных объектов, используя xaf. У меня есть непостоянный класс. Я хочу показать его как список, когда появляется всплывающее окно. Пока мне это не удавалось. Любая помощь приветствуется.


person bilgestackoverflow    schedule 05.08.2015    source источник
comment
Пожалуйста, покажите, что у вас есть на данный момент, и попытайтесь объяснить, где у вас есть проблемы с вашим существующим кодом!   -  person DerApe    schedule 05.08.2015
comment
Пожалуйста, научитесь быть добрее к людям, а не использовать восклицательные знаки. Тебе не нужно мне помогать @derape   -  person bilgestackoverflow    schedule 05.08.2015
comment
Ну, я не думаю, что был груб, я просто пытался сказать вам, чтобы улучшить ваш вопрос, что люди здесь, на SO, с большей вероятностью смогут вам помочь. Если у вас возникли проблемы с его улучшением, вы можете посмотреть, как задавать вопросы здесь: stackoverflow.com/help/how- спросить   -  person DerApe    schedule 05.08.2015
comment
См. также более простое, но более мощное решение с использованием события NonPersistentObjectSpace.ObjectsGetting в следующих разделах: Как: Отображение представления списка непостоянных объектов из навигации Как: Отображение непостоянных объектов в отчете   -  person Dennis Garavsky    schedule 22.09.2015


Ответы (1)


В Центре поддержки DevExpress есть полный пример: Как: Отобразить список не- Постоянные объекты. Вы даже можете запустить его онлайн.

Основная часть решения такова:

public class ShowDuplicateBooksController : ObjectViewController<ListView, Book> 
{
    public ShowDuplicateBooksController() 
    {
        PopupWindowShowAction showDuplicatesAction = 
            new PopupWindowShowAction(this, "ShowDuplicateBooks", "View");
        showDuplicatesAction.CustomizePopupWindowParams += showDuplicatesAction_CustomizePopupWindowParams;
    }

    void showDuplicatesAction_CustomizePopupWindowParams(object sender, CustomizePopupWindowParamsEventArgs e) 
    {
        Dictionary<string, int> dictionary = new Dictionary<string, int>();
        foreach(Book book in View.CollectionSource.List) {
            if(!string.IsNullOrEmpty(book.Title)) {
                if(dictionary.ContainsKey(book.Title)) {
                    dictionary[book.Title]++;
                }
                else 
                    dictionary.Add(book.Title, 1);
            }
        }
        DuplicatesList duplicateList = new DuplicatesList();
        int duplicateId = 0;
        foreach(KeyValuePair<string, int> record in dictionary) {
            if (record.Value > 1) {
                duplicateList.Duplicates.Add(
                    new Duplicate() {
                        Id = duplicateId,
                        Title = record.Key, 
                        Count = record.Value });
                duplicateId++;
            }
        }
        e.View = Application.CreateDetailView(Application.CreateObjectSpace(), duplicateList);
        e.DialogController.SaveOnAccept = false;
        e.DialogController.CancelAction.Active["NothingToCancel"] = false;
    }
}

По всем вопросам, связанным с DevExpress, вам следует сначала обратиться в их центр поддержки.

person shamp00    schedule 05.08.2015
comment
Спасибо @ shamp00, вчера я действительно сделал это, как этот пример, и он работает. - person bilgestackoverflow; 06.08.2015