今天闲来无事看到ORm的特性映射sql语句。我就想到datagridview也可以用这个来动态添加列。这样就不用每次都去界面上点开界面填列了。

代码简漏希望有人看到了能指点一二。

先定义好Datagridview要加载的列。

public class Model
    {
        [ColumnAttribute(type = typeof(DataGridViewTextBoxColumn), DataPName = "d", HText = "sd")]
        public int Id { get; set; }
        public string Name { get; set; }

    }

自定义特性

public class ColumnAttribute : Attribute
    {
        public Type type { get; set; }
        public string DataPName { get; set; }
        public string HText { get; set; }

    }

定义填加列方法

public DataGridViewColumn[] DgvCArry()
        {
            Model model = new Model();
           
            PropertyInfo[] property = model.GetType().GetProperties();
            DataGridViewColumn[] dgvcArr = new DataGridViewColumn[property.Count() - 1];
            for (int i = 0; i < property.Count()-1; i++)
            {
                object[] pInfo = property[i].GetCustomAttributes(false);
                foreach (object objAtt in pInfo)
                {
                    if (objAtt.GetType() != typeof(ColumnAttribute))
                    {
                        continue;
                    }
                    ColumnAttribute columnAtt = objAtt as ColumnAttribute;
                    var DgvColumnType = columnAtt.type;
                    object obj = DgvColumnType.Assembly.CreateInstance(DgvColumnType.FullName);
                 
                    if (columnAtt.type == typeof(DataGridViewTextBoxColumn))
                    {
                        DataGridViewTextBoxColumn dgvtc = obj as DataGridViewTextBoxColumn;
                        dgvtc = new DataGridViewTextBoxColumn()
                        {
                            HeaderText = columnAtt.HText,
                            DataPropertyName = columnAtt.DataPName,
                            Name = columnAtt.DataPName
                        };
                        dgvcArr[i] = dgvtc;
                    }
                    else if (columnAtt.type == typeof(DataGridViewComboBoxColumn))
                    {
                        DataGridViewComboBoxColumn dgvcbc = obj as DataGridViewComboBoxColumn;
                        dgvcbc = new DataGridViewComboBoxColumn()
                        {
                            HeaderText = columnAtt.HText,
                            DataPropertyName = columnAtt.DataPName,
                            Name = columnAtt.DataPName
                        };
                        dgvcArr[i] = dgvcbc;
                    }
                    else if (columnAtt.type == typeof(DataGridViewCheckBoxColumn))
                    {
                        DataGridViewCheckBoxColumn dgvcbc = obj as DataGridViewCheckBoxColumn;
                        dgvcbc = new DataGridViewCheckBoxColumn()
                        {
                            HeaderText = columnAtt.HText,
                            DataPropertyName = columnAtt.DataPName,
                            Name = columnAtt.DataPName
                        };
                        dgvcArr[i] = dgvcbc;
                    }
                    else if (columnAtt.type == typeof(DataGridViewImageColumn))
                    {
                        DataGridViewImageColumn dgvcbc = obj as DataGridViewImageColumn;
                        dgvcbc = new DataGridViewImageColumn()
                        {
                            HeaderText = columnAtt.HText,
                            DataPropertyName = columnAtt.DataPName,
                            Name = columnAtt.DataPName
                        };
                        dgvcArr[i] = dgvcbc;
                    }
                    else if (columnAtt.type == typeof(DataGridViewLinkColumn))
                    {
                        DataGridViewLinkColumn dgvcbc = obj as DataGridViewLinkColumn;
                        dgvcbc = new DataGridViewLinkColumn()
                        {
                            HeaderText = columnAtt.HText,
                            DataPropertyName = columnAtt.DataPName,
                            Name = columnAtt.DataPName
                        };
                        dgvcArr[i] = dgvcbc;
                    }
                    else if (columnAtt.type == typeof(DataGridViewButtonColumn))
                    {
                        DataGridViewButtonColumn dgvcbc = obj as DataGridViewButtonColumn;
                        dgvcbc = new DataGridViewButtonColumn()
                        {
                            HeaderText = columnAtt.HText,
                            DataPropertyName = columnAtt.DataPName,
                            Name = columnAtt.DataPName
                        };
                        dgvcArr[i] = dgvcbc;
                    }

                }
            }
            return dgvcArr;
        }

//界面初始化时调用

dataGridView1.Columns.AddRange(DgvCArry());

最新文章

  1. python猜数脚本(电脑猜测)(二分法)
  2. nodejs-基本语法
  3. Android之数据存储----使用LoaderManager异步加载数据库
  4. eclipse常用的字体
  5. C# 读取文本文档(转)
  6. boost之signal
  7. [转]SQL语句优化技术分析
  8. mysql 5.1 到 mysql 5.2的出现的索引BTREE问题 use near &#39;USING BTREE
  9. angularJs 页面筛选标签小功能
  10. &#183; HTML使用Viewport
  11. 遍历页面上所有TextBox,并赋值为String.Empty
  12. #include&quot;*.c&quot; 文件问题
  13. PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例
  14. linux目录下各文件夹作用
  15. C#实现GridView导出Excel
  16. python之smtplib发邮件
  17. Java环境----JDK开发环境搭建及环境变量配置
  18. windows中通过bat批处理打开exe文件
  19. 【二十三】php之预定义超全局变量
  20. Spring获取bean的步骤

热门文章

  1. Tosska SQL Tuning Expert 工具优化SQL语句
  2. MYSQL 主从复制---原理
  3. OGNL简介
  4. canvas 从初级到XX 1# 部分非基础原生API的使用 [初级向]
  5. webpack踩坑之旅
  6. react.js - 基于create-react-app的打包后文件根路径修改
  7. 19_Android中图片处理原理篇,关于人脸识别站点,图片载入到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写
  8. outb,inb等I/Oport操作函数
  9. 基于ASP.MVC票据FormsAuthenticationTicket身份认证
  10. Hibernate学习(二补充)关系映射----基于外键的双向一对一