• 使用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         public static 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         public static void 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                         else
    28                             column.Width = dr.Width;
    29                         columnList.Add(column);
    30                     }
    31                     dataGridView.Columns.AddRange(columnList.ToArray());
    32                 }
    33             }
    34             else
    35             {
    36                 MessageBox.Show("不存在表" + tableName + "的配置文件");
    37             }
    38         }

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

  • 相关阅读:
    基于SSM框架web搜索功能的实现
    使用APICloud打包webapp
    mac如何运行vue项目
    前端和算法实现:给网站上加上自己的水印(以后用上)
    jQuery常用代码片段
    关于vscode的个人配置
    听说你想用git,安装一下咯
    vue创建项目的一种方法
    用js控制css动画效果@keyframes
    axios的封装和拦截
  • 原文地址:https://www.cnblogs.com/zhaobl/p/DataGridViewColumnConfig.html
Copyright © 2020-2023  润新知