使用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         }

 

好久没写过随笔了,老是学习别人的,心里愧疚啊 呵呵 。

posted @ 2013-07-18 16:46  Li.DK  阅读(230)  评论(0)    收藏  举报