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 = ; 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的更多相关文章
- Silverlight中DataGrid的显示指定列、修改默认列名和格式化日期数据和小数数据
一:DataGrid的显示指定列.修改默认列名 使用自动生成列,就会无区别的按缺省格式展示所有项目.除了bit类型,其他类型项目会以字符串形式展现. 通过设置Columns属性,可以选择性的显示列,以 ...
- 随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里
JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(i ...
- easyui datagrid动态设置行、列、单元格不允许编辑
Easyui datagrid 行编辑.列编辑.单元格编辑设置 功能: 动态对datagrid 进行行.列.单元格编辑进行设置不允许编辑. 禁用行编辑: 在编辑方法调用前,对选择的行进行判断,如果不允 ...
- Wpf DataGrid动态添加列,行数据(二)
这是第二中方法,可直接绑定,我这里只是做出了一种思路,并不是最完美. 这里注意一下,因为我里面引用了MVVMLight,所以可能代码不是复制过去就能用了的. 样式也是,所以复制过去看不是我贴出来的界面 ...
- Wpf DataGrid动态添加列,行数据(一)
由于最近有这方面的需求,而且刚接触wpf不久,在网上找了很多方法,都不是使用MVVM模式的,因为DataGrid的列不能绑定 这就难受了,我想了个折中的方法,这个是使用了MVVMLight的消息机制, ...
- easyui datagrid 动态添加columns属性
公司在项目设计的时候,有一个需求,就是查出来的表的字段不唯一,一张表的字段可能是三个,也可能是五个,但是却要把它显示到页面,这个给我做ui的带来一点麻烦.因为以前一般用easyui 的datagrid ...
- easyui tree datagrid动态添加表头和表格数据,动态弹出框,修改和删除按钮
1.要有获取表头的URL和表格的URL 背景:点击树的一个节点,就加载一个表格,这个表格是动态的,表头和表格数据都是动态的 解决方案:需要两个URL,一个是获取表头的URL,一个是获取表格数据的URL ...
- 浅谈js中如何动态添加表头/表列/表格内容
我想很多童鞋用js动态向表格中添加数据很熟悉,而且也觉得非常简单!是的,对于写页面的童鞋来说,最喜欢写查询的页面了,动态向表格绑定数据.用for循环就可以轻松搞定. 如果我们的业务需求有所变化,可能我 ...
- 编辑 Ext 表格(一)——— 动态添加删除行列
一.动态增删行 在 ext 表格中,动态添加行主要和表格绑定的 store 有关, 通过对 store 数据集进行添加或删除,就能实现表格行的动态添加删除. (1) 动态添加表格的行 gridS ...
随机推荐
- 使用Python一步一步地来进行数据分析总结
原文链接:Step by step approach to perform data analysis using Python译文链接:使用Python一步一步地来进行数据分析--By Michae ...
- 使用clusterprofile做聚类分析
library(clusterProfiler ) #cat test.txt gene_symbol EXOSC10ARHGEF10LVWA5B1SRRM1PTAFRCSMD2SH3GLB1GBP6 ...
- BZOJ 3229: [Sdoi2008]石子合并
3229: [Sdoi2008]石子合并 时间限制: 3 Sec 内存限制: 128 MB提交: 497 解决: 240[提交][][] 题目描述 在一个操场上摆放着一排N堆石子.现要将石子有次序 ...
- WCF 4.0 进阶系列 -- 随笔汇总
WCF4.0 进阶系列–前言 WCF4.0 进阶系列--第一章 WCF简介 WCF4.0进阶系列--第二章 寄宿WCF服务 WCF4.0进阶系列--第三章 构建健壮的程序和服务 WCF4.0进阶系列- ...
- Hello World for U
题目描述: Given any ) characters, you are asked to form the characters into the shape of U. For example, ...
- 被table单元格colspan属性折磨了
基础知识不牢固,被colspan折磨了很长时间 table里面的td使用colspan前提条件是所跨的单元格宽度必须一样,不然显示效果会是属性不起作用或直接导致表格变形,下面的例子可以看出效果 < ...
- iOS开发 贝塞尔曲线UIBezierPath
最近项目中需要用到用贝塞尔曲线去绘制路径 ,然后往路径里面填充图片,找到这篇文章挺好,记录下来 自己学习! 转至 http://blog.csdn.net/guo_hongjun1611/articl ...
- git drupal eclipse
eclispe如何打补丁https://www.drupal.org/patch/apply打patch,初级详细教程https://www.drupal.org/node/620014
- 阿里云服务器 FTP配置图文教程和添加两个FTP站点
1.添加FTP账号和密码. A. 选择“服务管理器”->“配置”->“本地用户和组”->“用户”:在空白处右键选择“新用户”: B. 输入用户名,全名和描述可以不填写:输入两遍密码: ...
- 【bzoj1098】办公楼
[bzoj1098]办公楼 题意 FGD开办了一家电话公司.他雇用了N个职员,给了每个职员一部手机.每个职员的手机里都存储有一些同事的电话号码.由于FGD的公司规模不断扩大,旧的办公楼已经显得十分狭窄 ...