Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从devexpress gridcontrol中删除多行_C#_Wpf_Devexpress - Fatal编程技术网

C# 从devexpress gridcontrol中删除多行

C# 从devexpress gridcontrol中删除多行,c#,wpf,devexpress,C#,Wpf,Devexpress,我有一个wpf应用程序,其中一个用户控件使用devexpress网格控件。我为用户提供了选择特定行并通过处理keydown事件将其删除的功能,如下代码所述: private void m_gridA_KeyDown(object sender, KeyEventArgs e) { Tableview view = sender as Tableview; if(e.Key == Key.Delete) { IList<GridCell> cel

我有一个wpf应用程序,其中一个用户控件使用devexpress网格控件。我为用户提供了选择特定行并通过处理keydown事件将其删除的功能,如下代码所述:

private void m_gridA_KeyDown(object sender, KeyEventArgs e)
{
    Tableview view = sender as Tableview;
    if(e.Key == Key.Delete)
    {
        IList<GridCell> celllist = null;
        celllist = (sender as TableView).GetSelectedCells();
        if(cellist.Count < 10)
            return;
        view.DeleteRow(view.FocusedRowHandle)
    }
}
然后在每个行句柄上循环并删除它们。这种方法面临的问题是,在我的应用程序中,网格控件中有大量数据。因此,为了理解数据,使用网格控制过滤器编辑器进行了大量过滤。因此,函数GetSelectedRowHandles将返回当前筛选视图中选定且可见的行句柄。因此,当我调用view.DeleteRowrow[I]时,它会删除网格控件中的另一行,该行的rowhandle与未筛选条件下的网格控件的rowhandle匹配


如何克服这个问题?

像这样包装代码。它防止网格在执行多次删除时更新其内部状态,包括过滤器

view.Grid.BeginDataUpdate();
//Delete multiple rows here
view.Grid.EndDataUpdate();
gridView1.BeginUpdate; Int32[]selectedRowHandles=gridView1.GetSelectedRows; int t=-1; selectedRowHandles中的foreachvar项{ ifitem>=0&&t==1 t=项目; ift>=0 gridView1.DeleteRowt; } gridView1.EndUpdate;
再多一点信息也不会有什么坏处。这个解决方案似乎只删除了一行,因为t第二次永远不会是-1。
view.Grid.BeginDataUpdate();
//Delete multiple rows here
view.Grid.EndDataUpdate();