C# 从devexpress gridcontrol中删除多行
我有一个wpf应用程序,其中一个用户控件使用devexpress网格控件。我为用户提供了选择特定行并通过处理keydown事件将其删除的功能,如下代码所述: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
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();