一.您将treeList.OptionsView.ShowCheckBoxes设置为True,树形结构前就会出现CheckBox选择框,如果您想达到选择父节点,子节点也同时选中的效果,需将treeList.OptionsBehavior.AllowRecursiveNodeChecking设置为True。
设置完即可看到效果,如图:
二.获取选中行数据
private void GetCheckedID(TreeListNode parentNode)
{
if (parentNode.Nodes.Count == 0) return;//递归终止
foreach (TreeListNode node in parentNode.Nodes)
{
if (node.CheckState == CheckState.Checked)//判断当前节点选择状态
{
DataRowView drv = tlNav.GetDataRecordByNode(node) as DataRowView;//强转选中状态的行
if (drv != null && drv[Constant.fnNodeType].ToInt() == 2)//判断条件,满足行不为null同时节点类型为2的行
{
ids.Add(drv[Constant.fnID].ToInt());//添加到集合中去
}
}
GetCheckedID(node);//执行递归
}
}
//按钮事件
public override bool Save()
{
List<int> ids = new List<int>();//用来存储ID
if (tlNav.Nodes.Count > 0)
{
foreach (TreeListNode node in tlNav.Nodes)//拿所有结点
{
GetCheckedID(node);
}
}
return true;
}
ids即为选中的行id集合,可按需求调整!