本主题描述 新建项行 —— 允许最终用户添加新记录的行。 注意,它只能用于数据源支持添加新行时 (例如,数据源实现了 IBindingList 接口,并且 IBindingList.AllowNew 属性值是 true)。
新建项行
在网格视图中,新建项行 是通过一个可以用于输入新记录的空白行来呈现的。 它可以被显示在所有数据行和分组行的上面或下面。 新建项行 的位置由网格视图的 GridOptionsView.NewItemRowPosition 属性确定。 如果该属性值设置为 NewItemRowPosition.None 值,则 新建项行 被隐藏。
通过一个显示在相应的行指示器单元格中的星号 (*) 来标识 新建项行。 下面的插图分别展示了有新建项行位于其底部和顶部的网格视图。
在卡片视图中,通过一张位于所有其他卡片下面的空白卡片来呈现 新建项行。
当最终用户开始编辑新建项行时,ColumnView.InitNewRow 事件发生。 可以接管该事件来初始化新记录中的特定字段。 例如,可以接管该事件来把一个唯一值指派到关键字段。 当新建项行拥有焦点时,最终用户可以通过按下 ESC 键来取消添加新建项行。 一旦焦点被移动到其他行,则新添加的行被添加到数据源中,并显示一个空白的新建项行。
下面的示例代码接管了 ColumnView.InitNewRow 事件,使用默认值来初始化新记录的字段。 假设网格视图被绑定到 DataTable。 在这种情况下,可以通过 ColumnView.GetDataRow 方法来访问表示新建行的对象:
C# | 复制代码 |
---|---|
using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraGrid.Views.Base; private void gridView1_InitNewRow(object sender, InitNewRowEventArgs e) { ColumnView View = sender as ColumnView; View.SetRowCellValue(e.RowHandle, View.Columns["Type"], true); View.SetRowCellValue(e.RowHandle, View.Columns["CreatedDate"], DateTime.Today); } |
Visual Basic | 复制代码 |
---|---|
Imports DevExpress.XtraGrid.Views.Grid Imports DevExpress.XtraGrid.Views.Base Private Sub gridView1_InitNewRow(ByVal sender As Object, ByVal e As InitNewRowEventArgs) _ Handles gridView1.InitNewRow Dim View As ColumnView = sender View.SetRowCellValue(e.RowHandle, View.Columns("Type"), True) View.SetRowCellValue(e.RowHandle, View.Columns("CreatedDate"), DateTime.Today) End Sub |
下面的插图展示了运行结果。 假设新建项行的 Description 字段已经被最终用户初始化,而其他字段通过事件处理程序初始化。