Goto Data Grid 数据网格
Create Unbound Columns 创建未绑定的列
Create Unbound Columns at Design Time 在设计时创建未绑定的列
要在设计时创建未绑定的列,请执行以下操作:
- Run the Grid Designer. 运行 Grid Designer。
- Switch to “Columns”. 切换到 “Columns”。
- Click the “Add Column” button.单击 “Add Column” 按钮。
- Set the following column properties:设置以下列属性:
- GridColumn.FieldName – 您必须将此属性设置为与网格数据源中的任何字段名称都不匹配的唯一值。
- GridColumn.UnboundDataType — 将此属性设置为您的列应显示的数据类型。列会自动使用与所选数据类型对应的就地编辑器。
- 用数据填充未绑定的列。使用 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();
}
}
};
287

被折叠的 条评论
为什么被折叠?



