少し問題があります。IDによってより多くのグループにグループ化された単一の親とより多くの子で構成される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 && nodes.Count > 0)
{
foreach (TreeListNode node in nodes)
{
if (node.Level == 0 && !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 && callerGroup <= 100)
{
if (group >= 1 && group <= 100)
{
//node.Checked = true; - not done
}
}
//for ' 101 <= group <= 1000 ' -> Mandatory Service, minimum ONE from group, but allow and MORE
if (callerGroup >= 101 && callerGroup <= 1000)
{
}
//for ' group >= 1001 ' -> optional Service, ALL from group
if (callerGroup >= 1001 && group >= 1001)
{
node.Checked = !node.Checked; // --> DONE.
}
}
}
action(node.Nodes);
}
}
};
action(this.tlServices.Nodes);
私には3つのケースがあります:
- #1。1<=グループ<=100- >必須サービスの場合、グループから1つだけ許可します
- #2。101<=グループ<=1000- >必須サービスの場合、グループから少なくとも1つを許可しますが、それ以上を許可します
- #3。グループ>=1001- >オプションのサービスの場合、グループのすべてをオン/オフにします。
結果: #3は簡単に実行できましたが、#1を実装するにはどうすればよいですか。