以下のコードには、ツリーのノードのタグに格納されているAccessIdのリストがあります。それらのタグがリストにあるノード(または子ノード)を確認するにはどうすればよいですか?
List<AccessFieldSet> AccessList = new List<AccessFieldSet>();
private void GetRolesAccessData(Int32 RolesId)
{
C_RolesUsers Db = new C_RolesUsers();
AccessList = Db.GetRolesAccessData(RolesId);
foreach (AccessFieldSet Afs in AccessList)
{
foreach (TreeNode node in TreeRoles.Nodes)
{
if (node.Tag == Afs.AccessId.ToString())
{
//Check Node is true ?
}
GetTagChildren(node);
}
}
}
private void GetTagChildren(TreeNode Node)
{
TreeNode ChNode = null;
//TreeFieldSet nodeCat = (TreeFieldSet)Node.Tag;
//Int32 nodeCat = (Int32)Node.Tag;
foreach (AccessFieldSet Afs in AccessList)
{
if (Afs.AccessId.ToString() == Node.Tag)
{
//Check Node is true ?
GetTagChildren(ChNode);
}
}
}
コードを次のように編集します:
List<AccessFieldSet> AccessList = new List<AccessFieldSet>();
private void GetRolesAccessData(Int32 RolesId)
{
C_RolesUsers Db = new C_RolesUsers();
AccessList = Db.GetRolesAccessData(RolesId);
for (int i = 0; i < TreeRoles.Nodes.Count; i++)
{
CheckedSelectedNodes(i, TreeRoles.Nodes, AccessList);
}
}
private void CheckedSelectedNodes(Int32 i, TreeNodeCollection nodes, List<AccessFieldSet> AccessList)
{
TreeNode node = nodes[i];
for (int j = 0; j < AccessList.Count; j++)
{
foreach (AccessFieldSet Afs in AccessList)
{
if ((int)node.Tag == Afs.AccessId)
{
node.Checked = true;
}
}
}
}
新しいコードで、ノードのタグがAccessListにあるノードを確認できます。ChildNodes(ノードの子)のコードを変更するにはどうすればよいですか?