使用xml配置文件配置DataGridView的列信息
项目需求:
在设备管理中可以管理多类设备,每类设备的属性信息都不一样。如:

故障和LTU设备的列信息是不一样的
解决方法:
1.定义强类型的列配置信息,并存储在xml文件中
其中 PropertyName 对应List<T>中T的属性名称, PropertyText 是列名称 Visibled 是否显示

2.在项目启动时读取到缓存中
T 是定义的强类型DataTable
读取配置文件
1 ///<summary> 2 /// 读取配置文件 3 ///</summary> 4 ///<param name="fileName"></param> 5 ///<param name="tableName"></param> 6 ///<returns></returns> 7 publicstatic T GetConfigDT<T>(string fileName, string tableName) where T : DataTable, new() 8 { 9 T configDt =new T(); 10 configDt.TableName = tableName; 11 configDt.ReadXml(fileName); 12 return configDt; 13 }
3. 加载DataGridView数据,首先初始化列信息,然后设置数据源
this.dataGridViewX_终端.InitColumn("DEV_LTU"); //初始化列 this.dataGridViewX_终端.DataSource = DevTableAction.Instance.SelectLTU(); //读取数据源 List<t> 格式
初始化列
1 ///<summary> 2 /// 初始化列 3 ///</summary> 4 ///<param name="dataGridView"></param> 5 ///<param name="dt"></param> 6 publicstaticvoid InitColumn(this DevComponents.DotNetBar.Controls.DataGridViewX dataGridView, string tableName) 7 { 8 if (ColumnConfigHelper.ColumnConfigDS.Tables.Contains(tableName)) 9 { 10 ColumnConfigDS.ColumnConfigDataTable dt = ColumnConfigHelper.ColumnConfigDS.Tables[tableName] as ColumnConfigDS.ColumnConfigDataTable; 11 dataGridView.Columns.Clear(); 12 if (dt !=null) 13 { 14 15 dataGridView.AutoGenerateColumns =false; 16 17 List<DataGridViewColumn> columnList =new List<DataGridViewColumn>(); 18 foreach (ColumnConfigDS.ColumnConfigRow dr in dt.Rows) 19 { 20 if (dr.Visibled ==false) 21 continue; 22 DataGridViewTextBoxColumn column =new DataGridViewTextBoxColumn(); 23 column.DataPropertyName = dr.PropertyName; 24 column.HeaderText = dr.PropertyText; 25 if (dr.Width <0) 26 column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; 27 else28 column.Width = dr.Width; 29 columnList.Add(column); 30 } 31 dataGridView.Columns.AddRange(columnList.ToArray()); 32 } 33 } 34 else35 { 36 MessageBox.Show("不存在表"+ tableName +"的配置文件"); 37 } 38 }
好久没写过随笔了,老是学习别人的,心里愧疚啊 呵呵 。


浙公网安备 33010602011771号