dev treelist 中的 checkbox 值如何与数据源的值绑定

小白养大牛 2017-10-19 10:50:39

中间打勾的复选框是数据源的字段 FSel 为 bit型,请问如何与 treelist 的 checkbox 复选框绑定,还是我获取到 treelist 的复选框的值再赋值给FSel?
拜托了
...全文
359 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小白养大牛 2017-10-24
  • 打赏
  • 举报
回复
突然想到没把自己提的问题回答完,其实当时就搞定了!其实就是跟着节点去赋值就可以了,然后把选项框隐藏,自己把问题想复杂了,不过应该还有更好的方法,但我就用这个写在了项目里,如果有更好的更好哈哈!!还是来看代码吧 private void treeList1_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e)//点击树节点后事件 { DevExpress.XtraTreeList.Nodes.TreeListNode newnode = e.Node; dynamic aa = treeList1.GetDataRecordByNode(newnode); var bb = from i in treedata //treedata是我的数据源 where i.FID == aa.FID select i; if (newnode.CheckState != CheckState.Unchecked) { foreach (var c in bb) { c.FSel =true;//数据源中的选择框跟着赋值true勾选 } } else { foreach (var c in bb) { c.FSel = false;//数据源中的选择框跟着赋值false取消勾选 } } SetCheckedChildNodes(e.Node, e.Node.CheckState); SetCheckedParentNodes(e.Node, e.Node.CheckState); } private void SetCheckedChildNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check) { for (int i = 0; i < node.Nodes.Count; i++) { node.Nodes[i].CheckState = check;// dynamic aa = treeList1.GetDataRecordByNode(node.Nodes[i]); var bb = from b in treedata where b.FID == aa.FID select b; if (check != CheckState.Unchecked) { foreach (var c in bb) { c.FSel = true; } } else { foreach (var c in bb) { c.FSel = false; } } SetCheckedChildNodes(node.Nodes[i], check); } } private void SetCheckedParentNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check) { if (node.ParentNode != null) { bool b = false; CheckState state; for (int i = 0; i < node.ParentNode.Nodes.Count; i++) { state = (CheckState)node.ParentNode.Nodes[i].CheckState; if (!check.Equals(state)) { b = !b; break; } } node.ParentNode.CheckState = b ? CheckState.Indeterminate : check; dynamic aa = treeList1.GetDataRecordByNode(node.ParentNode); var data = from d in treedata where d.FID == aa.FID select d; if (node.ParentNode.CheckState == CheckState.Unchecked) { foreach (var c in data) { c.FSel = false; } } else { foreach (var c in data) { c.FSel = true; } } SetCheckedParentNodes(node.ParentNode, check); } }
exception92 2017-10-19
  • 打赏
  • 举报
回复
直接把值绑定到FieldName,不过列的ColumnEdit 为 repositoryItemCheckEdit
小白养大牛 2017-10-19
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
直接把值绑定到FieldName,不过列的ColumnEdit 为 repositoryItemCheckEdit
我最终是要取消中间的复选框, 只显示 treelist 的复选框。。如何将 treelist 的值与数据源字段 FSel 对应,就是后台表中的复选框值 FSel 能关联到 treelist 的复选框值,而treelist的值又如何判断是哪一行?新手求教

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧