Хорошо, поэтому я использую 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;
}