XGrid绑定(转)
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Windows.Forms;
- using DevExpress.XtraGrid.Columns;
- using DevExpress.XtraGrid.Views.Base;
- using DevExpress.XtraGrid.Views.BandedGrid;
- using DevExpress.XtraEditors.Repository;
- namespace XtraGridDemo1
- {
- public partial class Form1 : DevExpress.XtraEditors.XtraForm
- {
- public Form1()
- {
- InitializeComponent();
- //首先拖到窗体上一个GridControl,在表格上点击“Click here to change view”链接,在弹出菜单中选择“convert to”-->“AdvBandedGridView”。
- InitGrid();
- }
- ///初始化表格
- private void InitGrid()
- {
- // advBandedGridView1是表格上的默认视图,注意这里声明的是:BandedGridView
- BandedGridView view = advBandedGridView1 as BandedGridView;
- view.BeginUpdate(); //开始视图的编辑,防止触发其他事件
- view.BeginDataUpdate(); //开始数据的编辑
- view.Bands.Clear();
- //修改附加选项
- view.OptionsView.ShowColumnHeaders = false; //因为有Band列了,所以把ColumnHeader隐藏
- view.OptionsView.ShowGroupPanel = false; //如果没必要分组,就把它去掉
- view.OptionsView.EnableAppearanceEvenRow = false; //是否启用偶数行外观
- view.OptionsView.EnableAppearanceOddRow = true; //是否启用奇数行外观
- view.OptionsView.ShowFilterPanelMode = ShowFilterPanelMode.Never; //是否显示过滤面板
- view.OptionsCustomization.AllowColumnMoving = false; //是否允许移动列
- view.OptionsCustomization.AllowColumnResizing = false; //是否允许调整列宽
- view.OptionsCustomization.AllowGroup = false; //是否允许分组
- view.OptionsCustomization.AllowFilter = false; //是否允许过滤
- view.OptionsCustomization.AllowSort = true; //是否允许排序
- view.OptionsSelection.EnableAppearanceFocusedCell = true; //???
- view.OptionsBehavior.Editable = true; //是否允许用户编辑单元格
- //添加列标题
- GridBand bandID = view.Bands.AddBand("ID");
- bandID.Visible = false; //隐藏ID列
- GridBand bandName = view.Bands.AddBand("姓名");
- GridBand bandSex = view.Bands.AddBand("性别");
- GridBand bandBirth = view.Bands.AddBand("出生日期");
- GridBand bandScore = view.Bands.AddBand("分数");
- GridBand bandMath = bandScore.Children.AddBand("数学");
- GridBand bandChinese = bandScore.Children.AddBand("语文");
- GridBand bandEnglish = bandScore.Children.AddBand("英语");
- GridBand bandSubTotal = bandScore.Children.AddBand("小计");
- GridBand bandRemark = view.Bands.AddBand("备注");
- //列标题对齐方式
- bandName.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- bandSex.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- bandBirth.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- bandScore.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- bandMath.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- bandChinese.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- bandEnglish.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- bandSubTotal.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- bandRemark.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- //模拟几个数据
- List<Record> listDataSource = new List<Record>();
- listDataSource.Add(new Record(1, "张三","男",Convert.ToDateTime("1989-5-6") ,115.5f,101,96,""));
- listDataSource.Add(new Record(2, "李四", "女", Convert.ToDateTime("1987-12-23"), 92, 85, 87, ""));
- listDataSource.Add(new Record(3, "王五", "女", Convert.ToDateTime("1990-2-11"), 88, 69, 41.5f, ""));
- listDataSource.Add(new Record(4, "赵六", "男", Convert.ToDateTime("1988-9-1"), 119, 108, 110, "备注行"));
- //绑定数据源并显示
- gridControl1.DataSource = listDataSource;
- gridControl1.MainView.PopulateColumns();
- //[小计]这一列因为没绑定数据源,所以需要手动添加
- //(有点复杂,慢慢看吧)
- string[] fieldNames = new string[] { "SubTotal" };
- GridColumn column; //声明单列
- column = view.Columns.AddField(fieldNames[0]); //添加一个数据字段
- column.VisibleIndex = view.Columns.Count -1; //设置该列在编辑视图时的显示位置(倒数第二列)
- column.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
- column.OptionsColumn.AllowEdit = false; //此列不可编辑
- column.Visible = true;
- view.Columns.Add(column); //视图中添加一列
- //绑定事件,当[分数]改变时[小计]也跟着变
- //(好像只有在绑定事件里才能改变该单元格数值,直接修改无效)
- view.CustomUnboundColumnData += new
- DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(advBandedGridView1_CustomUnboundColumnData);
- //[性别]列绑定ComboBox
- RepositoryItemComboBox riCombo = new RepositoryItemComboBox();
- riCombo.Items.AddRange(new string[] {"男", "女"});
- gridControl1.RepositoryItems.Add(riCombo);
- view.Columns["Sex"].ColumnEdit = riCombo;
- //[出生年月]列绑定Date
- RepositoryItemDateEdit riDate = new RepositoryItemDateEdit();
- gridControl1.RepositoryItems.Add(riDate);
- view.Columns["Birth"].ColumnEdit = riDate;
- //[分数]列绑定SpinEdit
- RepositoryItemSpinEdit riSpin = new RepositoryItemSpinEdit();
- gridControl1.RepositoryItems.Add(riSpin);
- view.Columns["Math"].ColumnEdit = riSpin;
- view.Columns["Chinese"].ColumnEdit = riSpin;
- view.Columns["English"].ColumnEdit = riSpin;
- //[备注]列绑定MemoExEdit
- RepositoryItemMemoExEdit riMemoEx = new RepositoryItemMemoExEdit();
- gridControl1.RepositoryItems.Add(riMemoEx);
- view.Columns["Remark"].ColumnEdit = riMemoEx;
- //小计列添加汇总
- view.OptionsView.ShowFooter = true; //显示表格页脚
- view.Columns["SubTotal"].SummaryItem.FieldName = "SubTotal";
- view.Columns["SubTotal"].SummaryItem.DisplayFormat = "{0:f2}";
- view.Columns["SubTotal"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Average;
- //将标题列和数据列对应
- view.Columns["ID"].OwnerBand = bandID;
- view.Columns["Name"].OwnerBand = bandName;
- view.Columns["Sex"].OwnerBand = bandSex;
- view.Columns["Birth"].OwnerBand = bandBirth;
- view.Columns["Math"].OwnerBand = bandMath;
- view.Columns["Chinese"].OwnerBand = bandChinese;
- view.Columns["English"].OwnerBand = bandEnglish;
- view.Columns["SubTotal"].OwnerBand = bandSubTotal;
- view.Columns["Remark"].OwnerBand = bandRemark;
- view.EndDataUpdate();//结束数据的编辑
- view.EndUpdate(); //结束视图的编辑
- }
- // 计算小计
- private float calcSubTotal(float math, float chinese, float english)
- {
- return math + chinese + english;
- }
- private void advBandedGridView1_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
- {
- ColumnView colView = sender as ColumnView;
- if (e.Column.FieldName == "SubTotal" && e.IsGetData) e.Value = calcSubTotal(
- Convert.ToSingle(colView.GetRowCellValue(e.RowHandle, colView.Columns["Math"])),
- Convert.ToSingle(colView.GetRowCellValue(e.RowHandle, colView.Columns["Chinese"])),
- Convert.ToSingle(colView.GetRowCellValue(e.RowHandle, colView.Columns["English"])));
- }
- #region 运行时绑定到实现Ilist接口的数据源
- public class Record
- {
- int id;
- DateTime birth;
- string name, sex, remark;
- float math, chinese, english;
- public Record(int id, string name, string sex, DateTime birth, float math, float chinese, float english, string remark)
- {
- this.id = id;
- this.name = name;
- this.sex = sex;
- this.birth = birth;
- this.math = math;
- this.chinese = chinese;
- this.english = english;
- this.remark = remark;
- }
- public int ID { get { return id; } }
- public string Name
- {
- get { return name; }
- set { name = value; }
- }
- public string Sex
- {
- get { return sex; }
- set { sex = value; }
- }
- public DateTime Birth
- {
- get { return birth; }
- set { birth = value; }
- }
- public float Math
- {
- get { return math; }
- set { math = value; }
- }
- public float Chinese
- {
- get { return chinese; }
- set { chinese = value; }
- }
- public float English
- {
- get { return english; }
- set { english = value; }
- }
- public string Remark
- {
- get { return remark; }
- set { remark = value; }
- }
- }
- #endregion
- }
- }
XGrid绑定(转)的更多相关文章
- ASP.NET Core MVC/WebAPi 模型绑定探索
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- MVVM模式解析和在WPF中的实现(三)命令绑定
MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- 冒泡,setinterval,背景图的div绑定事件,匿名函数问题
1.会冒泡到兄弟元素么? $(function(){ $("#a").click(function(){alert("a")}) $("#b" ...
- Xamarin+Prism开发详解二:Xaml文件如何简单绑定Resources资源文件内容
我们知道在UWP里面有Resources文件xxx.resx,在Android里面有String.Xml文件等.那跨平台如何统一这些类别不一的资源文件以及Xaml设计文件如何绑定这些资源?应用支持多国 ...
- 数据的双向绑定 Angular JS
接触AngularJS许了,时常问自己一些问题,如果是我实现它,会在哪些方面选择跟它相同的道路,哪些方面不同.为此,记录了一些思考,给自己回顾,也供他人参考. 初步大致有以下几个方面: 数据双向绑定 ...
- Html.DropDownLis绑定数据库
效果: 方法一: View: <div class="col-md-md-4"> <div class="input-group"> & ...
- ASP.NET MVC——模型绑定
这篇文章我们来讲讲模型绑定(Model Binding),其实在初步了解ASP.NET MVC之后,大家可能都会产生一个疑问,为什么URL片段最后会转换为例如int型或者其他类型的参数呢?这里就不得不 ...
- Spring MVC初始化参数绑定
初始化参数绑定与类型转换很类似,初始化绑定时,主要是参数类型 ---单日期 在处理器类中配置绑定方法 使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型 proper ...
随机推荐
- Linux/Unix shell 监控Oracle监听器(monitor listener)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- 【转】IOS 开发环境,证书和授权文件等详解
(转自:http://blog.csdn.net/gtncwy/article/details/8617788) 一.成员介绍1. Certification(证书)证书是对电脑开发资格的认证, ...
- 关于iOS APP中网络层的设计
在iOS开发中,请求网络数据,处理获得的数据是很常见的功能,但是很少有资料会讨论关于网络的处理应该放在MVC中得哪个层中. 我在网上Google了一番,记下了几个觉得比较不错的链接.现记录如下: ht ...
- 删除特定影响因素(字段列)下的重复记录(MySQL)
;CREATE TABLE TabTest ( `id` ) NOT NULL AUTO_INCREMENT ,`factorA` ) NOT NULL DEFAULT ' ' ,`factorB` ...
- hdu 3537(博弈,翻硬币)
题意:给定了每个正面朝上的硬币的位置,然后每次可以翻1,2,3枚硬币,并且最右边的硬币开始必须是正面朝上的. 分析: 约束条件6:每次可以翻动一个.二个或三个硬币.(Mock Turtles游戏) 初 ...
- selenium python (十三)对于分页的处理
#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #对于web上分页的功能,一般做如下操作: #获取总页数 # ...
- LoadRunner error -27257
检查点函数 web_reg_find("Search=body", "savecount=num", "Text=test1", LAST) ...
- 用DzzOffice管理阿里云OSS
在DzzOffice分两种方式管理阿里云OSS 1.把阿里云oss作为多人或企业的共享网盘使用. 2.接入个人的阿里云oss管理,可同时管理多个bucket,多个bucket之间可以互传文件. 下面先 ...
- FreeMarker笔记 第四章 其它
4.1 自定义指令 4.1.1 简介 自定义指令可以使用macro指令来定义.Java程序员若不想在模板中实现定义指令,而是在Java语言中实现指令的定义,这时可以使用freemarker.templ ...
- 九度 Online Judge 之《剑指 Offer》一书相关题目解答
前段时间准备华为机试,正好之前看了一遍<剑指 Offer>,就在九度 Online Judge 上刷了书中的题目,使用的语言为 C++:只有3题没做,其他的都做了. 正如 Linus To ...