簡體   English   中英

從 devexpress gridcontrol 中刪除多行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM