本教程介绍DevExpress WinForm的Data Grid控件UI元素和API,它们使您和最终用户能够添加或删除数据行。您将首选学习如何启用内置的数据导航器,然后学习如何使用Microsoft Outlook启发的New Item行添加新记录。最后教程将向您展示基本的API,它使您能够添加或删除行,并在最终用户使用网格控件的UI添加记录时初始化字段值。
P.S:DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
获取DevExpress WinForms v24.1正式版下载(Q技术交流:532598169)
激活和使用数据导航器
首先您可以运行最终用户使用嵌入式导航器控件添加和删除行,为此设置GridControl.UseEmbeddedNavigator属性为true。
导航器出现在左下角,运行应用程序,看看使用导航器可以做些什么,单击Append按钮添加一行。
初始化单元格值之后,可以使用End Edit按钮发布更改。
注意,还有一个Cancel Changes按钮可用。要删除行,只需单击Delete按钮。
启用并使用新建项目行
添加新行的另一种方法是使用New Item行,要启用它,展开GridView.OptionsView并设置GridOptionsView.NewItemRowPosition属性为NewItemRowPosition.Top。
New Item行现在显示在网格的顶部,运行应用程序,单击行,初始化单元格值并发布更改,这可以通过移动行焦点或在聚焦最后一行单元格时按ENTER来完成。
可以使用ESCAPE键取消添加新行,如果正在编辑单元格,则按下第一个键将放弃对该单元格的更改,再次按ESCAPE键删除整行。
使用相同的属性,可以将New Item行定位在所有其他记录之后。以类似的方式,您可以开始编辑这一行,然后发布更改来创建新记录。
在代码中添加和删除行
为了方便最终用户输入,您可能希望在新添加的行中预定义单元格值。为此,处理ColumnView.InitNewRow事件,每当使用DevExpress WinForms网格控件的UI添加一行时,该事件就会触发。使用事件的InitNewRowEventArgs.RowHandle参数来识别要添加的行,并将当前日期和时间写入单元格。
C#
private void gridView1_InitNewRow(object sender, InitNewRowEventArgs e) {
GridView view = sender as GridView;
view.SetRowCellValue(e.RowHandle, "Date", DateTime.Now.Date);
}
VB.NET
Private Sub gridView1_InitNewRow(ByVal sender As Object, ByVal e As InitNewRowEventArgs)
Dim view As GridView = TryCast(sender, GridView)
view.SetRowCellValue(e.RowHandle, "Date", DateTime.Now.Date)
End Sub
您可能还需要为添加或删除行提供自定义UI,例如本例中的Add Row功能区按钮。在Click事件处理程序中,调用视图的调用View的GridView.AddNewRow方法。类似地,您可以添加Delete Row按钮,其Click处理程序应该调用ColumnView.DeleteRow方法来删除当前聚焦的行。
C#
private void bAddRow_ItemClick(object sender, ItemClickEventArgs e) {
gridView1.AddNewRow();
}
private void bRemoveRow_ItemClick(object sender, ItemClickEventArgs e) {
gridView1.DeleteRow(gridView1.FocusedRowHandle);
}
VB.NET
Private Sub bAddRow_ItemClick(ByVal sender As Object, ByVal e As ItemClickEventArgs)
gridView1.AddNewRow()
End Sub
Private Sub bRemoveRow_ItemClick(ByVal sender As Object, ByVal e As ItemClickEventArgs)
gridView1.DeleteRow(gridView1.FocusedRowHandle)
End Sub
运行应用程序并单击Add Row按钮,您可以看到Date字段值是用当前日期自动初始化的,现在关注新添加的行并单击Delete按钮来删除它。