Code Bye

TreeList中怎么样获取全部选取的行

这一段时间在使用DevExpress 的控件XtraTreeList。借鉴了网上的一些用法,例如说,在每行开始显示CheckBox,并使其有三种选中状态。然后就出现问题了,在获取全部选中的行的时候会出现父节点获取不到的问题。

上图是TreeList的选中状态,通过获取并显示他们各自的KeyFieldName为下图:

对应到第一幅图中就是

通过上述,可以发现,就算父节点是被选中的,例如上图中的美国和俄罗斯两个父节点就没有被选中。问一下还有什么办法可以获取?网上有资料说可以通过Selection进行获取,怎么操作?请各位大牛支招啊!
获取的代码如下:
private List<string> lstCheckedKeyID = new List<string>();//选择局ID集合
        /// <summary>
        /// 获取选择状态的数据主键ID集合
        /// </summary>
        /// <param name="parentNode">父级节点</param>
        private void GetCheckedKeyID(TreeListNode parentNode)
        {
            if (parentNode.Nodes.Count == 0)
            {
                return;//递归终止
            }
            foreach (TreeListNode node in parentNode.Nodes)
            {
                if (node.CheckState == CheckState.Checked)
                {
                    DataRowView drv = treeList1.GetDataRecordByNode(node) as DataRowView;//关键代码,就是不知道是这样获取数据而纠结了很久(鬼知道可以转换为DataRowView啊)
                    if (drv != null)
                    {
                        string KeyFieldName = (string)drv["KeyFieldName"];
                        lstCheckedKeyID.Add(KeyFieldName);
                    }
                }
                GetCheckedKeyID(node);
            }
        }
        /// <summary>
        /// 获取选中的节点
        /// </summary>
        /// <param name="tree"></param>
        private void findOrigin(DevExpress.XtraTreeList.TreeList tree)
        {
            this.lstCheckedKeyID.Clear();
            
            if (tree.Nodes.Count > 0)
            {
                foreach (TreeListNode root in tree.Nodes)
                {
                    GetCheckedKeyID(root);
                }
            }                     
        }
解决方案

5

https://documentation.devexpress.com/#WindowsForms/CustomDocument2434 本人查吧。checkbox 一般都是2种状态。
引用 3 楼 lvfeng1989 的回复:
Quote: 引用 1 楼 duanzi_peng 的回复:

https://documentation.devexpress.com/#WindowsForms/CustomDocument2434 本人查吧。checkbox 一般都是2种状态。

三种状态吧。

是的。一般使用2种状态。

35

引用 7 楼 czp_huster 的回复:
Quote: 引用 5 楼 lvfeng_95的回复:

Indeterminate  这是父节点的状态

问一下你有没有什么方法可以获取到 全部选中的节点呢?

假如你想获取全部选中的节点  那你把判断条件修改一下
if(this.checkBox1.CheckState!= CheckState.Unchecked)


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明TreeList中怎么样获取全部选取的行