Devexpress:在GridControl中使用RepositoryItemGridLookUpEdit

来源:互联网 发布:linux java环境变量 编辑:程序博客网 时间:2024/05/19 20:56

     RepositoryItemGridLookUpEdit 用于在GridControl中指定一列为多列数据下拉框,选择的之后只显示指定的列。该Devexpress版本为15.2.

定义名为TestModel类:

 public class TestModel     {        public int Id { get; set; }        public string Name { get; set; }        public int SizeTypeId { get; set; }}

定义TestModel集合:

public static List<TestModel> GenerateList()        {            return new List<TestModel>() {                new TestModel() {                      Id=1,                      Name=" 桌子",                },                new TestModel() {                     Id=2,                      Name=" 椅子",                },                new TestModel() {                     Id=3,                     Name="凳子",                }            };        }

定义RepositoryItemGridLookUpEdit 数据源:

/// <summary>        /// 生成包含3列的DataTable        /// </summary>        public static DataTable GenerateDT()        {            DataTable dt = new DataTable("TestTable");            dt.Columns.Add("Id", typeof(int));            dt.Columns.Add("Name", typeof(string));            dt.Columns.Add("Type", typeof(string));            for (int i = 1; i <= 100; i++)            {                DataRow rowg = dt.NewRow();                rowg["Id"] = i;                rowg["Name"] = $"{i * 12},{i * 10}";                int size = i * 10 * 10;                if (size < 3000)                {                    rowg["Type"] = "小号";                }                if (size >= 3000 && size < 5000)                {                    rowg["Type"] = "中号";                }                if (size >= 5000)                {                    rowg["Type"] = "大号";                }                dt.Rows.Add(rowg);            }            return dt;        }

在界面上拖放一个GridControl,窗口加载中定义列

/// <summary>        /// 数据源        /// </summary>        private List<TestModel> list = new List<TestModel>();        GridColumn gcId = new GridColumn();        private void GridControlForm_Load(object sender, EventArgs e)        {            list.AddRange(GenerateList());            gv.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.True;            gcId.Caption = "编号";            gcId.FieldName = "Id";            gcId.VisibleIndex = 0;            gcId.Width = 30;            this.gv.Columns.Add(gcId);            GridColumn gcName = gv.Columns.AddField("Name");            gcName.Caption = "名称";            gcName.VisibleIndex = 1;            this.gv.Columns.Add(gcName);            //尺寸类型 GridLookUpEdit            RepositoryItemGridLookUpEdit riglup = new RepositoryItemGridLookUpEdit();            riglup.DataSource = GenerateDT();            riglup.DisplayMember = "Name";            riglup.ValueMember = "Id";            // 为riglup增加3列            GridColumn riglupgcId = riglup.View.Columns.AddField("Id");            riglupgcId.Caption = "编号";            riglupgcId.VisibleIndex = 0;            riglupgcId.Width = 30;            GridColumn riglupgcName = riglup.View.Columns.AddField("Name");            riglupgcName.Caption = "名称";            riglupgcName.VisibleIndex = 1;            GridColumn riglupgcType = riglup.View.Columns.AddField("Type");            riglupgcType.Caption = "尺寸";            riglupgcType.VisibleIndex = 2;            // 添加到集合            riglup.View.Columns.Add(riglupgcId);            riglup.View.Columns.Add(riglupgcName);            riglup.View.Columns.Add(riglupgcType);            GridColumn gcSizeType = gv.Columns.AddField("SizeTypeId");            gcSizeType.VisibleIndex = 2;            gcSizeType.Caption = "尺寸";            gcSizeType.ColumnEdit = riglup;                      this.gv.Columns.Add(gcSizeType);            this.gc.DataSource = list;}

下拉列中自定义列使用如下代码:

GridColumn riglupgcId = riglup.View.Columns.AddField("Id");            riglupgcId.Caption = "编号";            riglupgcId.VisibleIndex = 0;
代码运行效果: