DevExpress: создание расписания с проблемой иерархии - PullRequest
0 голосов
/ 04 октября 2019

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

На основе существующих логических часов можно назначать определенные уровни иерархической системы. сложный ..

  • Верхний уровень - Проекты

  • Каждый проект может иметь бесконечное количество Задач

  • Каждая задача может иметь бесконечное количество подзадач

  • В зависимости от этого доступа, каждый сотрудник может быть назначен на любом уровне этой системы и иметь полный доступ ко всем подуровнямтам в. Чтобы уточнить, сотруднику может быть назначена задача, после чего у него есть доступ к этой задаче и все рабочие задания, прикрепленные к этой задаче.

  • Каждый сотрудник может записывать отработанные часы до любого уровня, который у него есть. доступ, но не к любым элементам подуровня. Ссылаясь на наш предыдущий пример, сотрудник может назначать часы, отработанные для выполнения Задачи, для которой он назначен, но не для какой-либо из Подзадач (кроме тех, которые назначены им)

  • Этостарая система, и я предполагаю, что блокировка часов, записанных для «только назначенных элементов», была сделана для предотвращения ошибки пользователя и, вероятно, изменится в будущем, чтобы отразить отображение уровня доступа

  • Myвопрос касается правильного отображения данных во внешнем интерфейсе для пользователя (программист бэкэнда, просто потянув за данные, это просто дисплей, который вызывает у меня проблему)

Итак,Идея моего менеджера (и, пожалуйста, дайте мне знать, если у вас есть какие-либо другие предложения по этому вопросу) состоит в том, чтобы в раскрывающихся списках отображались элементы и флажки для выбора одного из них, например ..

^ Projects

   ^ Tasks

    [] Task 1

        ^ SubTasks

         [] SubTask A

Итак, моя проблема заключается в том, что ..

1.) Наличие строк на правильном уровне

2.) Отображение раскрывающегося списка, только если для него существует элемент. Например, если в вышеприведенном примере не было подзадачи, она должна выглядеть следующим образом:

^ Projects

   ^ Tasks

    [] Task 1

Текущий код / ​​Судо-код ниже ..

<dxlc:LayoutItem>
    <dxg:GridControl ItemsSource="{Binding ProjList}">
        <dxg:GridControl.Columns>

            <dxg:GridColumn FieldName="ProjectName"
                        Header="Projects"
                        GroupIndex="0" />
            <dxg:GridColumn FieldName="TaskName"
                        Header="Tasks"
                        GroupIndex="1" />
            <dxg:GridColumn FieldName="SubTaskName"
                        Header="SubTasks"
                        GroupIndex="2" />

            <dxg:GridColumn FieldName="FullName"
                        Header="FullName" />
            <dxg:GridColumn FieldName="Description"
                        Header="Description" />

        </dxg:GridControl.Columns>
    </dxg:GridControl>
</dxlc:LayoutItem>
public ArrayList ProjList;

public class ProjItem{

    public bool isProjectLevel;
    public bool isTaskLevel;    
    public bool isSubTaskLevel;

    public string FullName;
    public string Description;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...