代码如下:

  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 = ; i < columns.Count; i++)
{
view.Columns[i].GroupIndex =columns[i].GroupIndex;
}
return view;
}
       ///<summary>
/// 设置按钮列
/// </summary>
/// <param name="dataColumnName">数据字段名</param>
/// <param name="dataColumnName">数据字段名</param>
/// <param name="btnText">按钮文本</param>
/// <param name="skinName">按钮皮肤名</param>
/// <param name="image">按钮图片</param>
/// <param name="location">图片位置</param>
/// <param name="clickFunction">按钮Handler</param>
/// <param name="view">basevew</param>
/// <param name="viewType">viewtype</param>
public static void SetButtonColumn(
string dataColumnName, string btnText, string skinName, System.Drawing.Image image,
DevExpress.XtraEditors.ImageLocation location,
DevExpress.XtraEditors.Controls.ButtonPressedEventHandler clickFunction, DevExpress.XtraGrid.Views.Base.BaseView view, ViewType viewType)
{
RepositoryItemButtonEdit rib = new RepositoryItemButtonEdit(); rib.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
rib.Buttons[].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;
rib.ButtonClick += clickFunction;
rib.Buttons[].Caption = btnText; if(skinName!="")
rib.LookAndFeel.SkinName = skinName; rib.LookAndFeel.UseDefaultLookAndFeel = false; if (image != null)
{
rib.Buttons[].Image = image;
rib.Buttons[].ImageLocation = location;
} rib.Buttons[].Visible = true; switch (viewType)
{
case ViewType.GridView:
(view as DevExpress.XtraGrid.Views.Grid.GridView).Columns[dataColumnName].ColumnEdit = rib;
break;
case ViewType.BandView:
(view as DevExpress.XtraGrid.Views.BandedGrid.BandedGridView).Columns[dataColumnName].ColumnEdit = rib;
break;
default:
break;
}
}
} public enum ViewType
{
GridView,
BandView
}

    }

    /// <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 = -;
}
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=,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;

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

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

    一:DataGrid的显示指定列.修改默认列名 使用自动生成列,就会无区别的按缺省格式展示所有项目.除了bit类型,其他类型项目会以字符串形式展现. 通过设置Columns属性,可以选择性的显示列,以 ...

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

    JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(i ...

  3. easyui datagrid动态设置行、列、单元格不允许编辑

    Easyui datagrid 行编辑.列编辑.单元格编辑设置 功能: 动态对datagrid 进行行.列.单元格编辑进行设置不允许编辑. 禁用行编辑: 在编辑方法调用前,对选择的行进行判断,如果不允 ...

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

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

  5. Wpf DataGrid动态添加列,行数据(一)

    由于最近有这方面的需求,而且刚接触wpf不久,在网上找了很多方法,都不是使用MVVM模式的,因为DataGrid的列不能绑定 这就难受了,我想了个折中的方法,这个是使用了MVVMLight的消息机制, ...

  6. easyui datagrid 动态添加columns属性

    公司在项目设计的时候,有一个需求,就是查出来的表的字段不唯一,一张表的字段可能是三个,也可能是五个,但是却要把它显示到页面,这个给我做ui的带来一点麻烦.因为以前一般用easyui 的datagrid ...

  7. easyui tree datagrid动态添加表头和表格数据,动态弹出框,修改和删除按钮

    1.要有获取表头的URL和表格的URL 背景:点击树的一个节点,就加载一个表格,这个表格是动态的,表头和表格数据都是动态的 解决方案:需要两个URL,一个是获取表头的URL,一个是获取表格数据的URL ...

  8. 浅谈js中如何动态添加表头/表列/表格内容

    我想很多童鞋用js动态向表格中添加数据很熟悉,而且也觉得非常简单!是的,对于写页面的童鞋来说,最喜欢写查询的页面了,动态向表格绑定数据.用for循环就可以轻松搞定. 如果我们的业务需求有所变化,可能我 ...

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

    一.动态增删行 在 ext 表格中,动态添加行主要和表格绑定的 store 有关, 通过对 store 数据集进行添加或删除,就能实现表格行的动态添加删除.   (1) 动态添加表格的行  gridS ...

随机推荐

  1. sql索引实例

    1.创建表并插入数据 在Sql Server2008中创建测试数据库Test,接着创建数据库表并插入数据,sql代码如下: USE Test IF EXISTS (SELECT * FROM INFO ...

  2. 【Unity3D游戏开发】之利用语法糖添加自定义拓展方法(下) (十八)

    首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕不已,呵呵. 1.  ...

  3. CentOS 6.5搭建PPTP VPN服务器

    VPN是虚拟专用网络(Virtual Private Network)的缩写,VPN有多种分类方式,包括PPTP.L2TP.IPSec等,本文配置的VPN服务器是采用PPTP协议的,PPTP是在PPP ...

  4. 图片溢出div问题的最终解决方案

    2016.11.20备注: 此问题通过css的max-width:100%;即可解决. 前两天编写了一个前端页面,在本机上显示一切正常.不过在不断的测试中,发现了一个严重的问题,如果图片过大,会撑破d ...

  5. loadrunner目录分析

    analysis templates——分析模板 可以制定自己的模板保存到analysis templates下 bin——可执行程序 注意里面的chm帮助文档,有c语言的函数帮助文档 bincert ...

  6. 学习mongo系列(九)索引,聚合,复制(副本集),分片

    一.索引 二.聚合 三.复制(副本集) 四.分片 尚未实践操作. 详见http://www.runoob.com/mongodb/mongodb-indexing.html

  7. io流操作大全

    JAVA 中的IO流 一.流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部 ...

  8. openfire聊天消息记录插件关键代码

    package com.sqj.openfire.chat.logs; import java.io.File; import java.util.Date; import java.util.Lis ...

  9. 浅谈Eclipse的更新、升级和MyEclipse插件的安装方法

    用的是如下图所示的eclipse标准版演示: 先谈下eclipse下安装MyEclipse插件的过程: 第一种方法:通过MyEclipse的存档进行离线更新 1,到MyEclipse官网进入下载页面, ...

  10. 分方式缓存常用的一致性hash是什么原理

    分方式缓存常用的一致性hash是什么原理 一致性hash是用来解决什么问题的?先看一个场景有n个cache服务器,一个对象object映射到哪个cache上呢?可以采用通用方法计算object的has ...