Devexpress:在GridControl中使用RepositoryItemGridLookUpEdit【转】

来源:互联网 发布:指绘软件 编辑:程序博客网 时间:2024/05/19 22:00

转至:http://blog.csdn.net/duanzi_peng/article/details/76176767 感谢大神

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

定义名为TestModel类:

[csharp] view plain copy
  1. public class TestModel   
  2.    {  
  3.        public int Id { getset; }  
  4.        public string Name { getset; }  
  5.        public int SizeTypeId { getset; }  

定义TestModel集合:

[csharp] view plain copy
  1. public static List<TestModel> GenerateList()  
  2.         {  
  3.             return new List<TestModel>() {  
  4.                 new TestModel() {  
  5.                       Id=1,  
  6.                       Name=" 桌子",  
  7.                 },  
  8.                 new TestModel() {  
  9.                      Id=2,  
  10.                       Name=" 椅子",  
  11.                 },  
  12.                 new TestModel() {  
  13.                      Id=3,  
  14.                      Name="凳子",  
  15.                 }  
  16.             };  
  17.         }  

定义RepositoryItemGridLookUpEdit 数据源:

[csharp] view plain copy
  1. /// <summary>  
  2.         /// 生成包含3列的DataTable  
  3.         /// </summary>  
  4.         public static DataTable GenerateDT()  
  5.         {  
  6.             DataTable dt = new DataTable("TestTable");  
  7.             dt.Columns.Add("Id"typeof(int));  
  8.             dt.Columns.Add("Name"typeof(string));  
  9.             dt.Columns.Add("Type"typeof(string));  
  10.             for (int i = 1; i <= 100; i++)  
  11.             {  
  12.                 DataRow rowg = dt.NewRow();  
  13.                 rowg["Id"] = i;  
  14.                 rowg["Name"] = $"{i * 12},{i * 10}";  
  15.                 int size = i * 10 * 10;  
  16.                 if (size < 3000)  
  17.                 {  
  18.                     rowg["Type"] = "小号";  
  19.                 }  
  20.                 if (size >= 3000 && size < 5000)  
  21.                 {  
  22.                     rowg["Type"] = "中号";  
  23.                 }  
  24.                 if (size >= 5000)  
  25.                 {  
  26.                     rowg["Type"] = "大号";  
  27.                 }  
  28.                 dt.Rows.Add(rowg);  
  29.             }  
  30.             return dt;  
  31.         }  

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

[csharp] view plain copy
  1. /// <summary>  
  2.         /// 数据源  
  3.         /// </summary>  
  4.         private List<TestModel> list = new List<TestModel>();  
  5.         GridColumn gcId = new GridColumn();  
  6.         private void GridControlForm_Load(object sender, EventArgs e)  
  7.         {  
  8.             list.AddRange(GenerateList());  
  9.             gv.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.True;  
  10.             gcId.Caption = "编号";  
  11.             gcId.FieldName = "Id";  
  12.             gcId.VisibleIndex = 0;  
  13.             gcId.Width = 30;  
  14.             this.gv.Columns.Add(gcId);  
  15.   
  16.             GridColumn gcName = gv.Columns.AddField("Name");  
  17.             gcName.Caption = "名称";  
  18.             gcName.VisibleIndex = 1;  
  19.             this.gv.Columns.Add(gcName);  
  20.             //尺寸类型 GridLookUpEdit  
  21.             RepositoryItemGridLookUpEdit riglup = new RepositoryItemGridLookUpEdit();  
  22.             riglup.DataSource = GenerateDT();  
  23.             riglup.DisplayMember = "Name";  
  24.             riglup.ValueMember = "Id";  
  25.             // 为riglup增加3列  
  26.             GridColumn riglupgcId = riglup.View.Columns.AddField("Id");  
  27.             riglupgcId.Caption = "编号";  
  28.             riglupgcId.VisibleIndex = 0;  
  29.             riglupgcId.Width = 30;  
  30.   
  31.             GridColumn riglupgcName = riglup.View.Columns.AddField("Name");  
  32.             riglupgcName.Caption = "名称";  
  33.             riglupgcName.VisibleIndex = 1;  
  34.   
  35.             GridColumn riglupgcType = riglup.View.Columns.AddField("Type");  
  36.             riglupgcType.Caption = "尺寸";  
  37.             riglupgcType.VisibleIndex = 2;  
  38.             // 添加到集合  
  39.             riglup.View.Columns.Add(riglupgcId);  
  40.             riglup.View.Columns.Add(riglupgcName);  
  41.             riglup.View.Columns.Add(riglupgcType);  
  42.   
  43.             GridColumn gcSizeType = gv.Columns.AddField("SizeTypeId");  
  44.             gcSizeType.VisibleIndex = 2;  
  45.             gcSizeType.Caption = "尺寸";  
  46.             gcSizeType.ColumnEdit = riglup;  
  47.             
  48.             this.gv.Columns.Add(gcSizeType);  
  49.             this.gc.DataSource = list;}  

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

[csharp] view plain copy
  1. GridColumn riglupgcId = riglup.View.Columns.AddField("Id");  
  2.             riglupgcId.Caption = "编号";  
  3.             riglupgcId.VisibleIndex = 0;