教你用DEV XtraGrid绑定非绑定列

原创|其它|编辑:郝浩|2010-04-30 11:31:57.000|阅读 5072 次

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

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

在实际开发中,我们经常会遇到需要将绑定列与非绑定列一起显示在一个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.    在表达式的编写中,可以直接调用常见的数学函数以及逻辑运算符等。
 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP