代码如下:

  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. SPOJ 375. Query on a tree (树链剖分)

    Query on a tree Time Limit: 5000ms Memory Limit: 262144KB   This problem will be judged on SPOJ. Ori ...

  2. ContentProvider总结

    一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给 ...

  3. iOS常用第三方

    名称 作用 说明 AFNetworking 基于HTTP协议联网   SDWebImage 图片缓存和异步加载   YYWebImage 图片缓存和异步加载   Ono XML解析   Rapture ...

  4. PHP匿名函数的使用

    $dealer = array(); array_walk($dealer_id_arr,function($value) use(&$dealer) { $dealer[] = get_co ...

  5. MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限

    1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...

  6. iOS - Mac Apache WebDav 服务器配置

    前言 Apache 服务器: Web 服务器,可以支持各种脚本(PHP)的执行,目前世界上使用最为广泛的一种 Web 服务器 WebDav 服务器: 基于 http 协议的 "文件" ...

  7. hdu2457DNA repair(ac自动机+dp)

    链接 从开始节点往下走,不能走到病毒节点,如果当前状态与原始串不一样就+1,取一个最小值. #include <iostream> #include<cstdio> #incl ...

  8. jquery checkbox勾选/取消勾选的诡异问题

    <form> 你爱好的运动是?<input type="checkbox" id="CheckedAll" />全选/全不选<br ...

  9. 【转】PDF电子书分享

    http://www.voidcn.com/blog/u013830841/article/p-4343018.html http://www.voidcn.com/blog/u013830841/a ...

  10. linux性能测试命令-----top

    Top命令显示了实际CPU使用情况,默认情况下,它显示了服务器上占用CPU的任务信息,并且每5秒钟刷新一次.它会显示CPU使用量.内存使用量.交换内存.缓存大小.缓冲区大小.流程PID.用户.命令等. ...