zoukankan      html  css  js  c++  java
  • Dev GridControl VS SeachLookUpEdit

    为了实现在 Dev GridControl 控件中,两列都用seachlookUpEdit 编辑,并且这两列需要联动,实现效果如下

    实现效果

    using DevExpress.XtraEditors.Repository;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace Dev10_2_8
    {
        public partial class Form4 : Form
        {
            public Form4()
            {
                InitializeComponent();
            }
    
            private List<Objectes> list = new List<Objectes>();
    
            private List<SeachLookUpEditData> SLEPLIST = new List<SeachLookUpEditData>();
    
            private List<SeachLookUpEditData> SLESLIST = new List<SeachLookUpEditData>();
    
            private void Form4_Load(object sender, EventArgs e)
            {
                Init();
            }
    
            public void Init()
            {
                #region 构建基础测试数据
    
                list.Add(new Objectes
                {
                    ID = "1",
                    NAME = "张三",
                    CLASSP = "a",
                    CLASSSON = "a1"
                });
    
                list.Add(new Objectes
                {
                    ID = "2",
                    NAME = "李四",
                    CLASSP = "b",
                    CLASSSON = "b1"
                });
    
                #endregion
    
                #region 构建SeachLookUpedit 数据源
    
                SLEPLIST.Add(new SeachLookUpEditData
                {
                    ID = "a",
                    NAME = "父节点A",
                    PID = "0"
                });
    
                SLEPLIST.Add(new SeachLookUpEditData
                {
                    ID = "b",
                    NAME = "父节点B",
                    PID = "0"
                });
    
                SLESLIST.Add(new SeachLookUpEditData
                {
                    ID = "a1",
                    NAME = "子节点A1",
                    PID = "a"
                });
    
                SLESLIST.Add(new SeachLookUpEditData
                {
                    ID = "a2",
                    NAME = "子节点A2",
                    PID = "a"
                });
    
                SLESLIST.Add(new SeachLookUpEditData
                {
                    ID = "b1",
                    NAME = "子节点B1",
                    PID = "b"
                });
    
                SLESLIST.Add(new SeachLookUpEditData
                {
                    ID = "b2",
                    NAME = "子节点B2",
                    PID = "b"
                });
    
                #endregion
    
                #region 绑定
    
                this.repositoryItemSearchLookUpEdit1.DataSource = SLEPLIST;
    
                this.repositoryItemSearchLookUpEdit2.DataSource = SLESLIST;
    
                this.gridControl1.DataSource = list;
    
                #endregion
            }
    
            /// <summary>
            /// 关键方法
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void gridView1_CustomRowCellEditForEditing(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
            {
                if (e.Column.FieldName == "CLASSSON")
                {
                    object oid = gridView1.GetFocusedRowCellValue("CLASSP");
    
                    if (oid == null) return;
    
                    string Pid = oid.ToString();
    
                    RepositoryItemSearchLookUpEdit lookup = ReturnLook(Pid);
    
                    e.RepositoryItem = lookup;
                }
            }
    
            /// <summary>
            /// 生产控件
            /// </summary>
            /// <param name="Pid"></param>
            /// <returns></returns>
            private RepositoryItemSearchLookUpEdit ReturnLook(string Pid)
            {
                var list = SLESLIST.Where(p => p.PID == Pid).ToList();
    
                RepositoryItemSearchLookUpEdit obj = new RepositoryItemSearchLookUpEdit
                {
                    ValueMember = "ID",
    
                    DisplayMember = "NAME",
    
                    DataSource = list
                };
    
                return obj;
            }
    
            /// <summary>
            /// 防止选择完父节点后,对应的子节点字段与父节点字段冲突 比如 选择的父节点是b,但是这个时候子节点还是 a的子节点。
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void repositoryItemSearchLookUpEdit1_EditValueChanged(object sender, EventArgs e)
            {
                var val = ((DevExpress.XtraEditors.BaseEdit)sender).EditValue;
    
                if (val != null)
                {
                    object Sid = gridView1.GetFocusedRowCellValue("CLASSSON");
    
                    var list = SLESLIST.Where(p => p.PID == val.ToString() && p.ID == Sid.ToString()).ToList();
    
                    if (list.Count == 0)
                    {
                        gridView1.SetFocusedRowCellValue("CLASSSON", null);
                    }
                }
            }
        }
    
        public class Objectes
        {
            public string ID { get; set; }
    
            public string NAME { get; set; }
    
            public string CLASSP { get; set; }
    
            public string CLASSSON { get; set; }
        }
    
        public class SeachLookUpEditData
        {
            public string ID { get; set; }
    
            public string NAME { get; set; }
    
            public string PID { get; set; }
        }
    }
    
    直如弦,死道边;曲如钩,反封侯
  • 相关阅读:
    IDEA手动创建JFinal项目(404问题处理)
    php 把数字1-1亿换成汉字表述,例如 150 转成 一百五十
    模仿console自写函数打印js的对象
    每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒? php
    js-Event构造函数,也许你需要
    js将金额专成每隔3位数加逗号
    js-PC版监听键盘大小写事件
    用php脚本给html中引用的js和css路径打上版本
    通过js的console优雅的将php调试信息输出
    android中加载的html获取的宽高不正确
  • 原文地址:https://www.cnblogs.com/houlin/p/15159138.html
Copyright © 2011-2022 走看看