#treeview #nodes #treelist
#просмотр дерева #узлы #древовидный список
Вопрос:
У меня небольшая проблема. я должен реализовать логику для древовидного списка, состоящего из одного родителя и нескольких дочерних элементов, сгруппированных в несколько групп по идентификаторам.
У меня есть действие, которое обрабатывает все узлы:
long callerGroup = -1L;
if (callerNode != null)
{
var service = this.tlServices.GetDataRecordByNode(callerNode) as __ServiceInfo;
if (service != null)
{
callerGroup = service.Group;
}
}
Action<TreeListNodes> action = null;
action = (nodes) =>
{
if (nodes != null amp;amp; nodes.Count > 0)
{
foreach (TreeListNode node in nodes)
{
if (node.Level == 0 amp;amp; !node.Checked)
{
node.Checked = true;
break;
}
else
{
var service = this.tlServices.GetDataRecordByNode(node) as __ServiceInfo;
if (service != null)
{
var group = service.Group;
//for ' 1 <= group <= 100' -> Mandatory Service, only ONE from group
if (callerGroup >= 1 amp;amp; callerGroup <= 100)
{
if (group >= 1 amp;amp; group <= 100)
{
//node.Checked = true; - not done
}
}
//for ' 101 <= group <= 1000 ' -> Mandatory Service, minimum ONE from group, but allow and MORE
if (callerGroup >= 101 amp;amp; callerGroup <= 1000)
{
}
//for ' group >= 1001 ' -> optional Service, ALL from group
if (callerGroup >= 1001 amp;amp; group >= 1001)
{
node.Checked = !node.Checked; // --> DONE.
}
}
}
action(node.Nodes);
}
}
};
action(this.tlServices.Nodes);
У меня есть 3 случая:
- #1. если 1 <= group <= 100 -> Обязательная служба, разрешить только ОДИН из группы
- # 2. если 101 <= group <= 1000 -> Обязательная служба, разрешите минимум ОДИН из группы, но разрешите и БОЛЬШЕ
- #3. если группа> = 1001 -> дополнительная служба, установите / снимите флажок ВСЕ из группы.
Результат: # 3, который я сделал легко, но как я могу реализовать # 1.
Комментарии:
1. для # 1 я нашел решение. я отправлю его через 7 часов в качестве ответа, потому что у меня репутация <100, и я должен подождать.
Ответ №1:
для # 1 я нашел реализацию:
// для ‘1 <= group <= 100’ -> Обязательная служба, только ОДНА из группы
if (callerGroup >= 1 amp;amp; callerGroup <= 100)
{
if (group >= 1 amp;amp; group <= 100)
{
foreach (TreeListNode nd in nodes)
{
var svc = this.tlServices.GetDataRecordByNode(nd) as __ServiceInfo;
long gr = svc.Group;
if (gr == callerGroup amp;amp; nd.Checked == true)
{
nd.Checked = false;
}
}
}
}`