[英]Delete multiple rows from devexpress gridcontrol
我有一個 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)
}
}
當用戶選擇單行時,這工作得很好。 但是,如果用戶需要同時刪除多行,我該如何實現相同的功能。
這是我嘗試的方法:
int[] rows = m_gridA.GetSelectedRowHandles();
然后遍歷每一行句柄並刪除它們。 我面臨的這種方法的問題是,在我的應用程序中,網格控件中有很多數據。 因此,為了理解數據,使用網格控件過濾器編輯器進行了大量過濾。 因此,函數GetSelectedRowHandles
返回在當前過濾視圖中選擇和可見的行句柄。 因此,當我調用view.DeleteRow(row[i])
它會刪除網格控件中的其他行,其行句柄與未過濾條件下的網格控件的行句柄相匹配。
我如何克服這個問題?
像這樣包裝你的代碼。 它可以防止網格在您進行多次刪除時更新其內部狀態(包括過濾器)。
view.Grid.BeginDataUpdate();
//Delete multiple rows here
view.Grid.EndDataUpdate();
gridView1.BeginUpdate(); Int32[] selectedRowHandles = gridView1.GetSelectedRows(); int t = -1; foreach(var item in selectedRowHandles) { if(item >= 0 && t == -1) t = item; if(t >= 0) gridView1.DeleteRow(t); } gridView1.EndUpdate();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.