logo Devexpress WPF控件文档中心

添加和删除行


新建行

新项目行是 "视图 "顶部或底部的空行。用户可以在此行中输入数据来创建新行。TreeListView支持从v19.1开始的新建项目行。

要显示新项目行,请将TableView.NewItemRowPosition / TreeListView.NewItemRowPosition属性设置为Top或Bottom。


  • 用户应在 "新建项目行 "中输入值。GridControl检查值是否有效,并根据当前的过滤器、组和排序设置在该处显示行。
  • 在TreeListView中,在根层中添加了一条新的行。用户可以在层次结构中的任何地方拖动这一行。将DataViewBase.AllowDragDrop属性设置为true,以允许拖放操作。
  • 用户可以在行聚焦时按Esc键取消追加新行。
  • 如果一个单元格处于编辑模式,用户应该按Esc键两次来关闭编辑器并取消追加。


初始化新项目行
您可以用默认值初始化新项目行。
使用该事件创建一个新的行实例。

<dxg:GridControl Name="grid">
    <dxg:GridControl.View>
        <dxg:TableView Name="view" 
            NewItemRowPosition="Top" 
            AddingNewRow="view_AddingNewRow" />
    </dxg:GridControl.View>
</dxg:GridControl>
void view_AddingNewRow(object sender, 
        AddingNewEventArgs e) {
    e.NewObject = new Person(1);
}

使用该事件来设置新项目行中的字段值。
<dxg:GridControl Name="grid">
    <dxg:GridControl.View>
        <dxg:TableView Name="view" 
            NewItemRowPosition="Top" 
            InitNewRow="view_InitNewRow" />
    </dxg:GridControl.View>
</dxg:GridControl>

void view_InitNewRow(object sender, 
        InitNewRowEventArgs e) {
    grid.SetCellValue(e.RowHandle, 
        "CompanyName", "New Company");
    grid.SetCellValue(e.RowHandle, 
        "UnitPrice", 10);
    grid.SetCellValue(e.RowHandle, 
        "Discontinued", false);
}
如果数据源允许你添加新的行,并且对象提供了一个没有参数的构造函数,那么GridControl就会创建一个新的行实例,否则,处理GridViewBase.AddingNewRow / TreeListView.AddingNewNode事件并指定NewObject属性。否则,处理GridViewBase.AddingNewRow / TreeListView.AddingNewNode事件并指定NewObject属性。
在Self-Referential模式下的TreeListView中,不能用重复的主键添加New Item Row。处理TreeListView.InitNewNode / TreeListView.AddingNewNode事件,并以唯一的主键初始化TreeListView.KeyFieldName属性中指定的字段。
<dxg:TreeListView x:Name="view" KeyFieldName="ID" ParentFieldName="ParentID"
    NewItemRowPosition="Bottom" InitNewNode="OnInitNewNode" />
void OnInitNewNode(object sender, DevExpress.Xpf.Grid.TreeList.TreeListNodeEventArgs e) {
    view.SetNodeValue(e.Node, "ID", view.TotalNodesCount + 1);
    // ...
}
在代码中添加和删除行

void addNewRow(object sender, RoutedEventArgs e) {
    view.AddNewRow();
    // 通过代码直接向新建行赋值
    int newRowHandle = DataControlBase.NewItemRowHandle;
    grid.SetCellValue(newRowHandle, "ProductName", "New Product");
    grid.SetCellValue(newRowHandle, "CompanyName", "New Company");
    grid.SetCellValue(newRowHandle, "UnitPrice", 10);            
    grid.SetCellValue(newRowHandle, "Discontinued", false);
}
移除行

void deleteRow(object sender, RoutedEventArgs e) {
    view.DeleteRow(view.FocusedRowHandle);
    //这里可以添加移除后的后端数据处理
}

在线咨询
联系我们

客服热线
023-68661681

QQ客服

意见反馈


添加微信获专业服务

TOP