GridView最后一列按回车键自动新增一条记录
GridView最后一列按回车键自动新增一条记录
描述
在GridView表格最后一条记录的最后一栏按回车键新增一条记录。
GridView.OptionsNavigation有EnterMoveNextColumn的功能,即按回车自动将焦点移到下一列。但用户要求当移到最后一行最后一列时按回车要自动新增一条记录。
实现方法:只需要处理表格KeyDown事件。
C# Code:
/// <summary>
/// 处理表格KeyDown事件。
/// <para>在表格最后一条记录的最后一栏按回车键新增一条记录</para>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void OnDetailGridViewKeyDown(object sender, KeyEventArgs e)
{
if (!(e.KeyCode == Keys.Enter || e.KeyCode == Keys.Tab)) return;
GridView view = (GridView)sender;
//最后一条记录
if ((view.FocusedRowHandle == view.RowCount - 1) &&& IsLastEditableColumn(view, view.FocusedColumn))
{
e.Handled = true;
//下面代码: 最后可编辑栏位,则新增记录.
Form dataForm = view.GridControl.FindForm();
if ((dataForm is frmBaseDataForm) & (view.GridControl.EmbeddedNavigator.Buttons.CustomButtons.Count > 0))
{
NavigatorButtonBase addButton = view.GridControl.EmbeddedNavigator.Buttons.CustomButtons[0];//新增按钮
view.GridControl.EmbeddedNavigator.Buttons.DoClick(addButton);
}
}
}
private static bool IsLastEditableColumn(GridView view, GridColumn focusedColumn)
{
int idx = view.VisibleColumns.IndexOf(focusedColumn);
for (int i = view.VisibleColumns.Count - 1; i >= 0; i--)
{
GridColumn col = view.VisibleColumns[i];
//忽略不可编辑Column
if (!col.OptionsColumn.AllowEdit) continue;
if (idx != i)
return false; //非最后一个可编辑Column
else
return true;
}
return true;
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
/// <summary>
/// 处理表格KeyDown事件。
/// <para>在表格最后一条记录的最后一栏按回车键新增一条记录</para>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void OnDetailGridViewKeyDown(object sender, KeyEventArgs e)
{
if (!(e.KeyCode == Keys.Enter || e.KeyCode == Keys.Tab)) return;
GridView view = (GridView)sender;
//最后一条记录
if ((view.FocusedRowHandle == view.RowCount - 1) &&& IsLastEditableColumn(view, view.FocusedColumn))
{
e.Handled = true;
//下面代码: 最后可编辑栏位,则新增记录.
Form dataForm = view.GridControl.FindForm();
if ((dataForm is frmBaseDataForm) & (view.GridControl.EmbeddedNavigator.Buttons.CustomButtons.Count > 0))
{
NavigatorButtonBase addButton = view.GridControl.EmbeddedNavigator.Buttons.CustomButtons[0];//新增按钮
view.GridControl.EmbeddedNavigator.Buttons.DoClick(addButton);
}
}
}
private static bool IsLastEditableColumn(GridView view, GridColumn focusedColumn)
{
int idx = view.VisibleColumns.IndexOf(focusedColumn);
for (int i = view.VisibleColumns.Count - 1; i >= 0; i--)
{
GridColumn col = view.VisibleColumns[i];
//忽略不可编辑Column
if (!col.OptionsColumn.AllowEdit) continue;
if (idx != i)
return false; //非最后一个可编辑Column
else
return true;
}
return true;
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
在Form.Load事件内绑定GridView.KeyDown事件。
C# Code:
gvDetail.KeyDown = new KeyEventHandler(GridMovetor.OnDetailGridViewKeyDown);
gvDetail.KeyDown = new KeyEventHandler(GridMovetor.OnDetailGridViewKeyDown);
适用版本:所有框架版本。
GridMovetor类下载:

参考文档:
C# DataGridView定位记录,设置焦点行
踩坑日记 | DevExpress GridView.GetSelectedRows方法返回无效的RowHandle行号|C/S开发框架
DataGridView绑定List 对象,偶尔出现索引 |1 没有值|C/S开发框架
DevExpress GridView设置焦点行颜色
C# DataGridView 隐藏默认 * 行|C/S开发框架
WinFramework轻量级开发框架 | 自定义窗体GridView表格样式布局|C/S开发框架
修改单元格关联更新其它列的值,Dev GridView组件OnCellValueChanged事件实现
C# DataGridView组件自动添加弹出菜单(ContextMenuStrip)复制单元格的值
C# Dev GridView表格使用RepositoryItemPictureEdit显示图标或图片
C# Dev GridView表格的CustomUnboundColumnData事件异步加载图片类AsynDownImage
DevExpress GridView表格CustomUnboundColumnData事件异步加载图片
DevExpress GridView 表格内嵌ButtonEdit按钮列图片按钮及Click事件
DevExpress GridView获取主从表,主子表,子级二层表的当前记录(Master/Detail)
DevExpress GridView在只读状态下如何隐藏表格的按钮EditorShowMode|ShowButtonMode
DevExpress GridView单元格CellValueChanged事件详解
DevExpress GridView表格记录位置调整,实现DataRow记录排序
C# DataGridView定位记录,设置焦点行
踩坑日记 | DevExpress GridView.GetSelectedRows方法返回无效的RowHandle行号|C/S开发框架
DataGridView绑定List 对象,偶尔出现索引 |1 没有值|C/S开发框架
DevExpress GridView设置焦点行颜色
C# DataGridView 隐藏默认 * 行|C/S开发框架
WinFramework轻量级开发框架 | 自定义窗体GridView表格样式布局|C/S开发框架
修改单元格关联更新其它列的值,Dev GridView组件OnCellValueChanged事件实现
C# DataGridView组件自动添加弹出菜单(ContextMenuStrip)复制单元格的值
C# Dev GridView表格使用RepositoryItemPictureEdit显示图标或图片
C# Dev GridView表格的CustomUnboundColumnData事件异步加载图片类AsynDownImage
DevExpress GridView表格CustomUnboundColumnData事件异步加载图片
DevExpress GridView 表格内嵌ButtonEdit按钮列图片按钮及Click事件
DevExpress GridView获取主从表,主子表,子级二层表的当前记录(Master/Detail)
DevExpress GridView在只读状态下如何隐藏表格的按钮EditorShowMode|ShowButtonMode
DevExpress GridView单元格CellValueChanged事件详解
DevExpress GridView表格记录位置调整,实现DataRow记录排序
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
