Antd 树形选择节点问题

Antd 树形选择节点问题,第1张

Antd 提供的 TreeSelect树形选择非常好用,但是有一个问题:节点选择。

场景一:当底层child 节点数为多个时 可以正常选择,但是为1时,会自动选择到父节点上,怎么办?

场景二:当我想要选择2级child节点时,选中的却是3级child节点,该如何解决?

解决这个问题的关键在于 灵活使用一个属性:showCheckedStrategy(默认是子节点)

⚠️注意:这个对象的值是枚举类型

SHOW_ALL: 显示所有选中节点(包括父节点)

SHOW_PARENT: 只显示父节点(当父节点下所有子节点都选中时)

SHOW_CHILD :只显示子节点

个人推荐使用三元运算 灵活改变节点取值,这样能在项目中满足多个不同等级账户的使用需求。

一、首先解决这个方法的思路很多,这里我分析两种.第一,点击树节点是为了干什么,我们直接把点击树节点这个事情转化为结果来做.比如它的结果是调用一个函数,传两个参数进去执行.第二,原生 *** 作dom

二、原生 *** 作dom

1.先看要实现的效果

2.获取树的dom不要在mounted进行,此时树的数据可能都还没组织好,树还没渲染

3.定义一个获取树中第一个子节点的方法,这里要用到选择器.bb就是树中点击的那个节点.

注意:点击其它节点都无效,这里需要自己多实验下.

4.在获取到树的数据后,再进行获取,实现点击

5.为方便复制,贴源码

6.树上有一个默认选中的属性,但是只能实现默认选中无法实现点击

首先打开树控件的属性对话框,添加单击事件如下图 *** 作,

,以上 *** 作会自动向工程中添加单击处理函数如下:

void CXXXXXX::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)

{

// TODO: 在此添加控件通知处理程序代码

CPoint Pos

::GetCursorPos(&Pos)  //获取鼠标点击的位置坐标

CPoint pt(Pos)

m_Treectrol.ScreenToClient(&pt)  //有屏幕坐标转成  控件坐标(树控件的客户区坐标)

HTREEITEM hSelItem = m_Treectrol.HitTest(pt)  //通过HitTest获取单击的子项

CRect rec

m_treeTaskRule.GetItemRect(hSelItem, &rec, TRUE)

if (hSelItem != 0 )//&& rec.PtInRect(pt)         //判断是否单击到子项(注释掉的代码为是否点击到子项区域一般是其文字显示区域)

{

m_Treectrol.SelectItem(hSelItem) //选中点击项

// add your  code

}

*pResult = 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7916062.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存