控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

如何用DEV XtraGrid绑定非绑定列

作者:佚名 出处:互联网 2010年05月01日 阅读:

在实际使用用DEV XtraGrid开发中,我们经常会遇到需要将绑定列与非绑定列一起显示在一个GridView上面。我们知道使用VS自带的DataGridView是不能直接实现这个功能的,那么,我们应该如何使用XtraGrid来实现这个功能?
首先,我们来看看效果图,如下图:

在上图中,ID、Name、Age、Salary是数据库中已有的字段,而Total—Expression和Total是绑定的非绑定列。在这里我想介绍XtraGrid中绑定非绑定列的两个方法:使用XtraGrid里面的表达式方法和使用CustomUnboundColumnData事件的方法!
一、    使用XtraGrid里面的表达式
该方法非常的简单,主要适合非绑定列数据可以直接通过绑定列计算得出的情况,代码如下:


//创建一非绑定列
            GridColumn columnExtPrice = new GridColumn();   
            columnExtPrice.FieldName = "Total-Expression";
            columnExtPrice.Caption = "Total-Expression";
           
            //关键代码
            columnExtPrice.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;      
            //设置计算表达式
            columnExtPrice.UnboundExpression = "[Age] * [Salary] ";
       
            gridView1.Columns.Add(columnExtPrice);
            columnExtPrice.VisibleIndex = gridView1.Columns.Count;

            //设置字符格式
            columnExtPrice.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
            columnExtPrice.DisplayFormat.FormatString = "c";


有上述代码可看出,Total-Expression的计算公式为对应行中Age与Salary的乘积。大家可以看出,该方法非常简单实用。
下面我们再来看看第二种方法:使用CustomUnboundColumnData事件。使用事件的方式同样很简单,但是它的适用情况更广。
首先我们根据具体的情况编写计算方法:我这里计算方法是对应行的Age×Salary×ID;


   //计算方法
        decimal getTotalValue(ColumnView view, int listSourceRowIndex)
        {
            DataRow row = test01DataSet.Tables["EMP"].Rows[listSourceRowIndex];
            int age = Convert.ToInt16(row["Age"]);
            decimal salary = Convert.ToDecimal(row["Salary"]);
            int ID = Convert.ToInt16(row["ID"]);
            return age * salary * ID;
        }
    然后,在窗体Load事件里面添加新列:Total,代码如下:


//创建一非绑定列
            GridColumn unbColumn = gridView1.Columns.AddField("Total");
            unbColumn.VisibleIndex = gridView1.Columns.Count;
            unbColumn.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
            //设置可编辑
            unbColumn.OptionsColumn.AllowEdit = false;
            //设置字符格式
            unbColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
            unbColumn.DisplayFormat.FormatString = "c";
           
//外观设置
            unbColumn.AppearanceCell.BackColor = Color.LemonChiffon;
    最后在CustomUnboundColumnData事件处理程序中实现非绑定列的绑定,代码如下:
private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
        {
//当列的字段名为Total的时候,给事件参数e的Value属性赋值。
            if (e.Column.FieldName == "Total" && e.IsGetData)
                e.Value =getTotalValue(sender as ColumnView, e.ListSourceRowIndex);
        }

    实现非绑定列的两种方法就介绍给大家了,总的来说:
1.    两种方法的实现都比较简单。
2.    使用事件的方法比使用表达式的方法更加灵活,使用范围更广。
3.    在表达式的编写中,可以直接调用常见的数学函数以及逻辑运算符等。

 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统