Unbound Columns 未绑定的列

Goto Data Grid 数据网格

Create Unbound Columns 创建未绑定的列

Create Unbound Columns at Design Time 在设计时创建未绑定的列

要在设计时创建未绑定的列,请执行以下操作:

  1. Run the Grid Designer. 运行 Grid Designer。
  2. Switch to “Columns”. 切换到 “Columns”。
  3. Click the “Add Column” button.单击 “Add Column” 按钮。
  4. Set the following column properties:设置以下列属性:
    • GridColumn.FieldName – 您必须将此属性设置为与网格数据源中的任何字段名称都不匹配的唯一值。
    • GridColumn.UnboundDataType — 将此属性设置为您的列应显示的数据类型。列会自动使用与所选数据类型对应的就地编辑器。
  5. 用数据填充未绑定的列。使用 GridColumn.UnboundExpression 属性或处理 ColumnView.CustomUnboundColumnData 事件。有关其他信息,请阅读本主题中的以下部分:未绑定表达式和具有自定义数据的可编辑未绑定列。

在这里插入图片描述

Create Unbound Columns in Code 在代码中创建未绑定的列

下面的示例在代码中创建一个未绑定的列。您应该显式设置未绑定列的可见性,并将该列添加到视图的 Columns 集合中。
在这里插入图片描述

using System;
using System.Data;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Columns;

namespace DXApplication9 {
    public partial class Form1 : XtraForm {
        public Form1() {
            InitializeComponent();
            gridControl1.DataSource = InitDataTable();
            Load += Form1_Load;
        }

        private void Form1_Load(object sender, EventArgs e) {
            GridColumn unboundColumn = new GridColumn() {
                Caption = "Total (Unbound Column)",
                FieldName = "Total",
                UnboundDataType = typeof(double),
                UnboundExpression = "[Price]*(1 - [Discount])",
                Visible = true
            };
            gridView1.Columns.Add(unboundColumn);
        }

        DataTable InitDataTable() {
            DataTable table = new DataTable("DataRecords");
            table.Columns.AddRange(new DataColumn[] {
                new DataColumn("Price", typeof(int)),
                new DataColumn("Discount", typeof(double))
            });
            table.Rows.Add(new object[] { 19.99, 0.1 });
            table.Rows.Add(new object[] { 33.99, 0.25});
            table.Rows.Add(new object[] { 89.99, 0.5 });
            return table;
        }
    }
}

Unbound Expressions 未绑定的表达式

未绑定表达式允许您根据其他列中的值计算未绑定列的值。使用我们的 Expression Editor 快速创建表达式。若要调用表达式编辑器,请单击“属性”窗口中 GridColumn.UnboundExpression 属性旁边的省略号按钮:
在这里插入图片描述
使用 GridColumn.UnboundExpression 属性在代码中指定未绑定的表达式。表达式指定为字符串。

以下示例指定未绑定表达式,该表达式通过从当前年份中减去 “Int” 列的值来计算年份:

unboundColumn1.UnboundExpression = "GetYear(AddYears(LocalDateTimeNow(), - [Int]))";

Modify Unbound Expressions at Runtime 在运行时修改未绑定的表达式

启用 GridColumn.ShowUnboundExpressionMenu 设置以显示“表达式编辑器…”项,并允许用户修改未绑定的表达式。
在这里插入图片描述
使用 ColumnViewOptionsBehavior.UnboundColumnExpressionEditorMode 属性指定是使用旧版 Editor(与设计时使用的相同),还是使用支持语法突出显示和自动完成的更新版本。

Editable Unbound Columns with Custom Data 具有自定义数据的可编辑未绑定列

ColumnView.CustomUnboundColumnData 事件允许您执行以下操作:

  • 使用值填充未绑定列中的单元格。
  • 获取用户编辑(您可以接受或放弃)。读取 e.IsGetData 和 e.IsSetData 属性的值,为以下每种情况指定一组不同的操作:
    • e.IsGetData — 当需要填充列并且您需要提供单元格值时,返回 true。
    • e.IsSetData — 当用户更改了单元格值并且您需要将修改后的值保存到数据源时,返回 true。

以下示例演示如何从 Dictionary 中检索数据并将更改保存回该 Dictionary:

// Creates an unbound column that supports editing.
GridColumn unboundColumn = gridView.Columns.AddField("CustomData");
unboundColumn.UnboundDataType = typeof(string);
unboundColumn.Visible = true;

// Handles the CustomUnboundColumnData event.
Dictionary<int, string> unboundData = new Dictionary<int, string>();
unboundData[1] = "Can live up to 20 years!";
gridView.CustomUnboundColumnData += (sender, e) =>
{
    if(e.Column.FieldName == "CustomData") {
        // Populates columns.
        if(e.IsGetData) {
            if(unboundData.ContainsKey(e.ListSourceRowIndex)) 
                e.Value = unboundData[e.ListSourceRowIndex];
        }
        // Posts edits back to the data source.
        if(e.IsSetData && e.Value != null) {
            unboundData[e.ListSourceRowIndex] = e.Value.ToString();
        }
    }
};
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值