Devexpress datagrid动态添加显示指定列的gridView

代码如下:

  public class DXGridControlHelper
    {
        /// <summary>
        /// 获取显示指定列的GridView
        /// </summary>
        /// <param name="grid"></param>
        /// <param name="columns">列集合</param>
        /// <returns></returns>
        public static DevExpress.XtraGrid.Views.Grid.GridView GetColumnsView(DevExpress.XtraGrid.GridControl grid,
          List<GridColumnModel> columns)
        {
            DevExpress.XtraGrid.Views.Grid.GridView view = new DevExpress.XtraGrid.Views.Grid.GridView(grid);

            foreach (GridColumnModel item in columns)
            {
                DevExpress.XtraGrid.Columns.GridColumn column = new DevExpress.XtraGrid.Columns.GridColumn();
                column.FieldName = item.DataColumnName;
                column.Name = item.ColumnName;
                column.Caption = item.ColumnTitle;
                column.Visible = item.Visible;
                view.Columns.Add(column);
            }
           //下面指定分组,-1 为不分组 0,1,2....为分组顺序 (add的时候指定groupindex 无效,可能为列未在视图中初始化)
            for (int i = 0; i < columns.Count; i++)
            {
                view.Columns[i].GroupIndex =columns[i].GroupIndex;
            }
            return view;
        }
    }

    /// <summary>
    /// 动态创建gridView视图,列的Model
    /// </summary>
    public class GridColumnModel
    {
        /// <summary>
        /// 列表头文本
        /// </summary>
        public string ColumnTitle { get; set; }

        /// <summary>
        /// 列唯一标识 name,默认为(column_sql语句中的字段名(小写))
        /// column_sqlcolumnname
        /// </summary>
        private string _columnName;
        public string ColumnName
        {
            get
            {
                if (string.IsNullOrEmpty(_columnName))
                    return "column_" + DataColumnName.ToLower();
                return _columnName;
            }
            set { _columnName = value; }
        }

        /// <summary>
        /// sql 语句中的字段名称
        /// </summary>
        public string DataColumnName { get; set; }

        /// <summary>
        /// 可见性,默认true
        /// </summary>
        private bool? _visible;

        public bool Visible
        {
            get
            {
                if (_visible == null)
                    return true;
                return bool.Parse(_visible.ToString());
            }
            set
            {
                _visible = value;
            }
        }

        /// <summary>
        /// 分组,默认-1
        /// </summary>
        private int? _groupIndex;
        public int GroupIndex
        {
            get
            {
                if (_groupIndex == null)
                {
                    _groupIndex = -1;
                }
                return int.Parse(_groupIndex.ToString());
            }
            set
            {
                _groupIndex = value;
            }
        }

    }

使用该代码 方法:

说明:动态制定的列 要与数据源中的列字段名(sql语句中的字段名) 一致

 var view2 = DXGridControlHelper.GetColumnsView(gridControl1, new List<ColumnModel>() {
                        new ColumnModel(){ColumnTitle="ID",DataColumnName="Id"},//默认该列为显示,列名为column_id
                        new ColumnModel(){ColumnTitle="课件名称",GroupIndex=0,DataColumnName="Name"},//按照该列分组
                        new ColumnModel(){ColumnTitle="描述",DataColumnName="Description"},
                        new ColumnModel(){ColumnTitle="归属",DataColumnName="Objective"},
                        new ColumnModel(){ColumnTitle="图片",ColumnName="img",DataColumnName="ImgGif",Visible=false}
                    });
                  DataTable tab = cl.GetDataTable("select * from table_name");
                   gridControl1.MainView = view2;
                   gridControl1.DataSource = tab;

end;

时间: 2024-11-05 17:29:00

Devexpress datagrid动态添加显示指定列的gridView的相关文章

Silverlight中DataGrid的显示指定列、修改默认列名和格式化日期数据和小数数据

一:DataGrid的显示指定列.修改默认列名 使用自动生成列,就会无区别的按缺省格式展示所有项目.除了bit类型,其他类型项目会以字符串形式展现. 通过设置Columns属性,可以选择性的显示列,以及显示的样式.在这里,我把Category,Supplier,Product和对应的ID去掉,指定显示的列: <sdk:DataGrid Name="dataGrid" AutoGenerateColumns="False" Margin="12&quo

随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里

JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(id){ /*字符串 变量*/ var images='{$content.pictureurl} ' ; /* console.log( images ) ;*/ /*字符串分割成字符串数组 split*/ var StringArray = images.split(','); /* consol

EasyUI datagrid动态添加列

任务描述:根据用户选择时间段,生成列数据,如图 一.先定义好datagrid固定的数据列 <script type="text/javascript"> $(document).ready(function () { $("#td_Radio").datagrid({ striped: true, border: true, iconCls: 'icon-edit', //图标 singleSelect: true, autoRowHeight: tru

如何在GridControl中显示图片列?控件DevExpress.XtraGrid.GridControl中显示图片列。

GridControl一列的ColumnEdit属性中选择PictureEdit,一个RepositoryItemPictureEdit添加完成.列的FieldName设置为Image列名,如img. GridControl绑定的数据,不管是DataTable.List或者其他源,添加一个列,列名为img. 以DataTable为例: Image xx=Image.FromFile("xxx"),yy=Image.FromFile("yyy"); dt.Column

Wpf DataGrid动态添加列,行数据(二)

这是第二中方法,可直接绑定,我这里只是做出了一种思路,并不是最完美. 这里注意一下,因为我里面引用了MVVMLight,所以可能代码不是复制过去就能用了的. 样式也是,所以复制过去看不是我贴出来的界面这也不奇怪.代码: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions

easyui dataGrid 动态添加列

其实很简单.新手创作,不好勿喷.jsp页面: 1 <script> 2 $(function () { 3 4 $.getJSON('${pageContext.request.contextPath}/resources/json/datagrid_data.json',function(result){ 5 var columns=new Array(); 6 $.each(result.headers[0], function(i, field){ 7 var column={}; 8

easyui datagrid 动态添加columns属性

公司在项目设计的时候,有一个需求,就是查出来的表的字段不唯一,一张表的字段可能是三个,也可能是五个,但是却要把它显示到页面,这个给我做ui的带来一点麻烦.因为以前一般用easyui 的datagrid里的columns属性都是对应数据库表里的字段,现在字段都不知道,怎么用datagrid显示数据呢?本人在这里介绍最笨的办法,就是拼接出columns 属性的格式,我承认,我的办法效率不高,但是当你无从下手的时候,,这未尝不是解决问题的办法,当然在解决这个问题之前,我也百度了一下,试了一些办法,有的

编辑 Ext 表格(一)——— 动态添加删除行列

一.动态增删行 在 ext 表格中,动态添加行主要和表格绑定的 store 有关, 通过对 store 数据集进行添加或删除,就能实现表格行的动态添加删除. (1) 动态添加表格的行  gridStore.add({}); (2) 动态删除表格的行 gridStore.removeAt(gridStore.count() - 1); 二.动态增删列 在 ext 表格中,动态添加列主要通过修改表格绑定的 column 元素, 通过对 column 元素集进行添加或删除,然后重新渲染表格,就能实现表

C# DevExpress TreeList指定KeyFieldName后无法显示该列的问题

可以在设置KeyFieldName前,将OptionsBehavior.PopulateServiceColumns属性设置为true,就会显示KeyFieldName,ParentFieldName字段 trlBM.DataSource = dtShow; trlBM.OptionsBehavior.PopulateServiceColumns = true; trlBM.KeyFieldName = "DEPTID"; trlBM.ParentFieldName = "P