DevExpress.XtraGrid winform试用分享
DevExpress.XtraGrid在winform里使用还挺麻烦,为了减少重复代码和代码复用,本人针对DevExpress.XtraGrid封装了一个Form的基类,其中涵盖了DevExpress.XtraGrid的基本用法,本文没有多少营养大家慎重观评啊,否则浪费您看岛国爱情动作片的宝贵时间本博概不负责!哈哈。
关注点: WinForm项目使用封装、继承;DevExpress.XtraGrid在WinForm的基本运用。
前戏:
本人已经逃离上海,回老家上成都发展了(继续做开发,到传统软件公司做安卓和.net c/s方向的开发)。求关照,求介绍私活(速度赚钱还房贷啊!!!回成都收入减少那是刚刚嘀)。认识多年的朋友邀请我作为的战略合作伙伴加入他成都的公司,本作离老家(重庆)近可经常回去和妻儿呆在一起,且收入下降的比例还可以接受,遂接受邀请,心不甘情不愿的回来了。去上海十一年,好像没什么收获啊,临走前想找个15k的工作说服自己留下来,天可怜见,不能如愿啊。
正文:
1)DevExpress.XtraGrid基本技巧
1.DevExpress控件组中的GridControl控件不能使横向滚动条有效。现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容。
解决:
gridView1.OptionsView.ColumnAutoWidth属性是true,即各列的宽度自动调整,你把它设成false,就会出现了。
2.使单元格不可编辑。
gridcontrol -->gridview -->OptionsBehavior -->Editable=false
3.去除"Drag a Column Header Here To Group by that Column"或者改为中文
属性Gridview->Option View->Show Group Panel=false,就好了 ,“gridView.GroupPanelText”是设置改默认文字的属性。
4.数据绑定
(1) 在GridControl控件面板中点击
(2) 在出现的窗体中,点击左边的
进行列名的编辑。点击上方的
可添加一列,
插入一列,
移除一列。点击
后在右边的属性面板中找到Caption设置显示的列标题和FieldName设置该列绑定数据的字段名,Visible设置列是否隐藏。
绑定代码:
gridControl2.DataSource = od.data_select("select * from tablename").Tables[0];//od是数据库操作类,data_select返回DataSet类型,绑定DataTable类型
5.选择某行数据触发时间
gridView2.RowClick += new DevExpress.XtraGrid.Views.Grid.RowClickEventHandler(gridView2_RowClick);
这样设置以后必须点击最左边的行编号才可以触发事件,需要设置gridcontrol -->gridview -->OptionsBehavior -->Editable=false即可点击任意单元格触发事件。
6.选择某行后获取当前表格数据
this.textBox1.Text = gridView2.GetDataRow(e.RowHandle)["列名"].ToString();
7.设置奇、偶行交替颜色
(1) OptionsView.EnableAppearanceEvenRow = true;OptionsView.EnableAppearanceOddRow = true;
(2) 设置Appearance.EvenRow.BackColor和Appearance.OddRow.BackColor
8.在每行第一列显示行号
(1) this.gridView2.IndicatorWidth = 30;//设置显示行号的列宽
(2) 设置动作gridView2.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView2_CustomDrawRowIndicator);
|
1
2
3
4
5
6
7
8
|
//添加行号 void gridView2_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) { if(e.Info.IsRowIndicator && e.RowHandle >= 0) { e.Info.DisplayText = (e.RowHandle + 1).ToString(); } } |
9.根据绑定的数据源自动产生列
gridView2.PopulateColumns();
2)代码:
基类窗体代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace DailyAuditApp
{
public class XtraGridListBaseForm : Form
{
protected DevExpress.XtraGrid.GridControl gridCtrl;
protected DevExpress.XtraGrid.Views.Grid.GridView gridView;
private string groupPanelText = "操作提示:拖动某个列标题到此处即可按该列分组统计。";
/// <summary>
/// 分组面板提示文本
/// </summary>
public string GroupPanelText
{
get { return groupPanelText; }
set
{
groupPanelText = value;
gridView.GroupPanelText = value;
gridView.Invalidate();
}
}
protected bool isDisplayRowIndexNo = true;
/// <summary>
/// 表格是否显示行号
/// </summary>
public bool IsDisplayRowIndexNo
{
get { return isDisplayRowIndexNo; }
set { isDisplayRowIndexNo = value; }
}
private bool enableAppearanceEvenRow = true;
/// <summary>
/// 隔行显示不同的颜色
/// </summary>
public bool EnableAppearanceEvenRow
{
get { return enableAppearanceEvenRow; }
set
{
enableAppearanceEvenRow = value;
gridView.OptionsView.EnableAppearanceEvenRow = true;
gridView.Invalidate();
}
}
/// <summary>
/// 窗体宽度匹配 工作主屏幕
/// </summary>
private bool fullScreenWidth = true;
public bool FullScreenWidth
{
get { return fullScreenWidth; }
set { fullScreenWidth = value;}
}
/// <summary>
/// 构造函数,创建GridControl和GridView
/// 定制并初始化Form
/// </summary>
public XtraGridListBaseForm()
{
this.Icon = Properties.Resources.aidpoint_ico;
this.gridCtrl = new DevExpress.XtraGrid.GridControl();
this.gridView = new DevExpress.XtraGrid.Views.Grid.GridView();
this.gridCtrl.Dock = DockStyle.Fill;
//
// gridCtrl
//
this.gridCtrl.Location = new System.Drawing.Point(156, 130);
this.gridCtrl.MainView = this.gridView;
this.gridCtrl.Name = "gridCtrl";
this.gridCtrl.Size = new System.Drawing.Size(400, 200);
this.gridCtrl.TabIndex = 0;
this.gridCtrl.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
this.gridView});
//
// gridView
//
this.gridView.GridControl = this.gridCtrl;
this.gridView.Name = "gridView";
gridView.IndicatorWidth = 30;
gridView.GroupPanelText = groupPanelText;
//展现表格控件
this.Controls.Add(gridCtrl);
gridCtrl.BringToFront();
} protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
//主屏幕工作区宽度自适应
if (fullScreenWidth)
{
this.Width = Screen.PrimaryScreen.WorkingArea.Width - 2;
this.Top = (Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2;
this.Left = 1;
}
//隔行显示
gridView.OptionsView.EnableAppearanceEvenRow = enableAppearanceEvenRow;
if (gridView.GroupCount > 0)
gridView.ExpandAllGroups();
//自动展开
gridView.EndGrouping += new EventHandler(gridView_EndGrouping);
//表格显示行号
if (isDisplayRowIndexNo)
{
gridView.CustomDrawRowIndicator += new DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventHandler(gridView_CustomDrawRowIndicator);
}
//默认数据源
if (gridCtrl.DataSource == null)
{
gridView.OptionsBehavior.Editable = false;
SetGridViewDataSource();
}
} /// <summary>
/// 拖拽(列表标头)分组后自动展开
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void gridView_EndGrouping(object sender, EventArgs e)
{
if (gridView.GroupCount > 0)
gridView.ExpandAllGroups();
} /// <summary>
/// 自动添加行号
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void gridView_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
} /// <summary>
/// 回车键焦点跳转到下一TabOrder的控件上,ESC关闭窗口
/// </summary>
/// <param name="msg"></param>
/// <param name="keyData"></param>
/// <returns></returns>
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((keyData == Keys.Enter) && (!(ActiveControl is Button)))
{
System.Windows.Forms.SendKeys.Send("{TAB}");
return true;
}
if (keyData == Keys.Escape)
{
this.Close();
}
return base.ProcessCmdKey(ref msg, keyData);
} /// <summary>
/// 设置表格数据源
/// </summary>
protected virtual void SetGridViewDataSource()
{
var dt = new DataTable();
dt.Columns.Add(new DataColumn("提示信息",typeof(string)));
var dr = dt.NewRow();
dr.ItemArray = new string[]{"没有记录。"};
dt.Rows.Add(dr);
gridCtrl.DataSource = dt;
}
}
}
业务窗体代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DataAccess;
using DailyAuditApp.DailyAuditProxy; namespace DailyAuditApp
{
public partial class Form1 : XtraGridListBaseForm
{
DailyAuditService biz = new DailyAuditService();
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
using (aidpoint_cloudEntities db = new aidpoint_cloudEntities())
{
var ds = db.ExecuteQuery("SELECT * FROM [aidpoint_cloud].[dbo].[样本]");
ds.Tables[0].TableName = "付款方式统计表";
biz.SyncClientBizData("Aidpoint4006005262", ds);
}
} protected override void SetGridViewDataSource()
{
gridCtrl.DataSource = new DataAccess.aidpoint_cloudEntities().付款方式统计表;
gridView.Columns["业态名称"].GroupIndex = 0;
}
}
}
3)效果截图:



后戏:
1)风尘仆仆赶回去朋友却没有来接我,背一包,提两包。看来“战略合作伙伴”并不代表重视啊,再忙也不用开口说的啊...
2) 已经入职了。
DevExpress.XtraGrid winform试用分享的更多相关文章
- DevExpress.XtraGrid
DevExpress.XtraGrid控件使用 该控件类是一个表格控件,但是其具有很多方便而使用的功能,例如可以对记录进行分组,可以再记录的前面加上checkbox,可以将具有相同值的cell 进行合 ...
- DevExpress.XtraGrid 【转】
http://www.cnblogs.com/zeroone/p/4574539.html DevExpress.XtraGrid控件使用 该控件类是一个表格控件,但是其具有很多方便而使用的功能,例如 ...
- DevExpress.XtraGrid.view.gridview 属性说明
本文摘自: http://www.cnblogs.com/-ShiL/archive/2012/06/08/ShiL201206081335.html (一)双击展开,收缩字表 ExpandedChi ...
- 基于DevExpress的Winform程序安装包的制作
在我们做系统开发的时候,都会面临一个安装包制作的问题,如何把我们做好的系统,通过安装包工具整合成一个安装包给客户进行安装.安装包的优势就是一步步安装就可以了,不用复制一大堆文件给客户,还怕缺少那个文件 ...
- DevExpress.XtraGrid.GridControl 实现自定义tooltip
DevExpress.XtraGrid.GridControl 控件默认的tooltip显示的每一个单元格的文本值,但是实际工作中会出现各种需求.我这里就有一个列是折扣率显示的值是0-1之间的两位小数 ...
- DevExpress.XtraGrid.Views 设置指定行的背景颜色 .
如需要将指定行的背景设置颜色,可参考以下示例 1.事件:CustomDrawCell 2.示例: private void gridView1_CustomDrawCell(object sender ...
- DevExpress.XtraGrid.Views.BandedGrid.BandedGridView
使用的是DevExpress.XtraGrid.Views.BandedGrid.BandedGridView 类 没有在工具箱里找到对应控件 ,绕了一下,先创建一个gridcontrol ,然后gr ...
- DevExpress XtraGrid 数据导出导入Excel
// <summary> /// 导出按钮 /// </summary> /// <param name="sender"></param ...
- 实现在DevExpress.XtraGrid.GridControl的列头绘制复选框以实现全选的功能
首先新建一个Win Form测试项目,拖一个GridControl控件到窗体上. public partial class Form1 : Form { public Form1() { Initia ...
随机推荐
- [ACM_图论] Highways (变形说法的最小生成树)
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28972#problem/C 题目给出T种情况,每种情况有n个城镇,接下来每一行是第i个城 ...
- gulp学习笔记1
gulp系列学习笔记: 1.gulp学习笔记1 2.gulp学习笔记2 3.gulp学习笔记3 4.gulp学习笔记4 1.安装gulp 首先我们需要node环境,nodejs安装这里就不说了,不懂的 ...
- AndroidManifest常见的设置解析
AndroidManifest.xml清单文件是每个Android项目所必需的,它是整个Android项目的全局描述文件.AndroidManifest.xml清单文件说明了该应用的名称.所使用的图标 ...
- 使用Nginx负载均衡搭建高性能.NETweb应用程序二
在文章<使用Nginx负载均衡搭建高性能.NETweb应用程序一>中,让我们对Nginx有了一个初步认识,下面我们将在windows平台下面使用Nginx演示集群部署我们的web应用. 一 ...
- NoteExpress 自定义参考文献输出样式
最近在写硕士论文,样式中没有符合要求的,于是就自己来编辑下样式文件,下文是网上搜集的关于自定义参考文献的一篇教程,可以参考. 一.分隔符|和连接符*的使用 (1)连接符 * 主要作用是“建立依赖关系” ...
- CAN Timing Sample Point
typedef struct { //char name[ 16 ]; // Name of the CAN controller hardware //uint32_t ref_clk; // CA ...
- Apache和tomcat服务器使用ajp_proxy模块
首先我们先介绍一下为什么要让Apache与Tomcat之间进行连接.事实上Tomcat本身已经提供了HTTP服务,该服务默认的端口是8080,装好tomcat后通过8080端口可以直接使用Tomcat ...
- 如何实现LBS轨迹回放功能?含多平台实现代码
本篇文章告诉您,如何实现轨迹回放.并且提供了web端,iOS端,Android端3个平台的轨迹回放代码.拷贝后可以直接使用.另外,文末有小彩蛋,算是开发者的福利. Web端/JavaScript 实现 ...
- 一个purge参数引发的惨案——从线上hbase数据被删事故说起
在写这篇blog前,我的心情久久不能平静,虽然明白运维工作如履薄冰,但没有料到这么一个细小的疏漏会带来如此严重的灾难.这是一起其他公司误用puppet参数引发的事故,而且这个参数我也曾被“坑过”. ...
- Initializing a collection
Before Java 1.7, only this one is permitted: ArrayList<String> a = new ArrayList<String> ...