[DevExpress]TreeListLookUpEdit带checkbox之经典运用
经典 运用 checkbox devexpress
2023-09-11 14:14:42 时间
上代码:
public partial class TreeListLookUpEdit : DevExpress.XtraEditors.XtraForm { private string _KeyName; public string KeyName { get { return lblKeyName.Text; } set { lblKeyName.Text = value; } } private string _KeyID; public string KeyID { get { return lblKeyID.Text; } set { lblKeyID.Text= value; } } public TreeListLookUpEdit() { InitializeComponent(); } private void TreeListLookUpEdit_Load(object sender, EventArgs e) { } protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (DesignMode) return; txtRole.Properties.TreeList.OptionsView.ShowCheckBoxes = true; txtRoleBind(); DefaultChecked("3"); GetSelectedRoleIDandName(); txtRole.Properties.TreeList.AfterCheckNode += (s, a) => { a.Node.Selected = true; // txtRole.RefreshEditValue(); // txtRole.ForceClosePopup(); GetSelectedRoleIDandName(); }; } private void GetSelectedRoleIDandName() { this.lstCheckedKeyID.Clear(); this.lstCheckedKeyName.Clear(); if (txtRole.Properties.TreeList.Nodes.Count > 0) { foreach (TreeListNode root in txtRole.Properties.TreeList.Nodes) { GetCheckedKeyID(root); } } lblKeyID.Text = ""; lblKeyName.Text = ""; foreach (int id in lstCheckedKeyID) { KeyID += id + ","; } foreach (string name in lstCheckedKeyName) { KeyName += name + ","; } } private void DefaultChecked(string rid) { string strSql = " SELECT [MID] FROM [DZ].[dbo].[DZ_RoleMenu] where RID=" + rid; DataTable dt = DbHelperSQL.Query(strSql).Tables[0]; if (txtRole.Properties.TreeList.Nodes.Count > 0) { foreach (TreeListNode nd in txtRole.Properties.TreeList.Nodes) { for (int i = 0; i < dt.Rows.Count; i++) { int checkedkeyid = int.Parse(dt.Rows[i][0].ToString()); if (txtRole.Properties.TreeList.FindNodeByKeyID(checkedkeyid) != null) { txtRole.Properties.TreeList.FindNodeByKeyID(checkedkeyid).Checked = true; } } } } } private void txtRoleBind() { DZAMS.BLL.DZ_RoleInfo rf = new BLL.DZ_RoleInfo(); string where = "1=1 order by PARENTID,ID ASC"; DataTable tblDatas = rf.GetList(where).Tables[0]; //设置字段 this.txtRole.Properties.TreeList.KeyFieldName = "ID"; this.txtRole.Properties.TreeList.ParentFieldName = "PARENTID"; this.txtRole.Properties.DataSource = tblDatas; this.txtRole.Properties.ValueMember = "ID"; this.txtRole.Properties.DisplayMember = "NAME"; } private List<int> lstCheckedKeyID = new List<int>();//选择局ID集合 private List<string> lstCheckedKeyName = new List<string>();//选择局Name集合 /// <summary> /// 获取选择状态的数据主键ID集合 /// </summary> /// <param name="parentNode">父级节点</param> private void GetCheckedKeyID(TreeListNode parentNode) { if (parentNode.Nodes.Count == 0) { return;//递归终止 } if (parentNode.CheckState != CheckState.Unchecked) { DataRowView drv = txtRole.Properties.TreeList.GetDataRecordByNode(parentNode) as DataRowView; if (drv != null) { int KeyFieldName = (int)drv["ID"]; string DisplayMember = drv["NAME"].ToString(); if (!lstCheckedKeyID.Contains(KeyFieldName)) { lstCheckedKeyID.Add(KeyFieldName); } if (!lstCheckedKeyName.Contains(DisplayMember)) { lstCheckedKeyName.Add(DisplayMember); } } } foreach (TreeListNode node in parentNode.Nodes) { if (node.CheckState != CheckState.Unchecked) { DataRowView drv = txtRole.Properties.TreeList.GetDataRecordByNode(node) as DataRowView;//关键代码,就是不知道是这样获取数据而纠结了非常久(鬼知道能够转换为DataRowView啊) if (drv != null) { int KeyFieldName = (int)drv["ID"]; string DisplayMember = drv["Name"].ToString(); lstCheckedKeyID.Add(KeyFieldName); lstCheckedKeyName.Add(DisplayMember); } } GetCheckedKeyID(node); } } private void txtRole_Closed(object sender, DevExpress.XtraEditors.Controls.ClosedEventArgs e) { } void txtRole_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e) { e.DisplayText = lblKeyName.Text; } }
相关文章
- 【华为云技术分享】【一统江湖的大前端(8)】matter.js 经典物理
- 经典算法题每日演练——第二十二题 奇偶排序
- 卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning(转)
- IIS 7 托管管道模式 经典模式(Classic) 集成模式(Integrated) 分析与理解
- Atitit 图像处理30大经典算法attilax总结
- AI之NLP:自然语言处理技术简介(是什么/学什么/怎么用)、常用算法、经典案例之详细攻略(建议收藏)daiding
- Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略
- c++ 副本构造函数 函数实参 形参 c++入门经典 11 17 章
- 十大经典数据挖掘算法(9) 朴素贝叶斯分类器 Naive Bayes
- 经典自学笔记Selenium自动化测试第二天(上)
- python 十大经典排序算法
- IIS7 经典模式和集成模式的区别
- DSA 经典数据结构与算法 学习心得和知识总结(二) |散列 从小白初级入门到大佬全知全会(实质已然崩溃)