2015-09-18 38 views
2

我試圖更改我的RadContextMenu上的項目,具體取決於我的RadGridView(編輯:OrderList)中當前選定的行。如果當前行中的數據綁定項具有正確的屬性值,我希望啓用該項。RadContextMenu.DropDownOpened在更改RadGridView.CurrentRow之前調用

問題是,當我直接右擊一行打開RadContextmenuCurrentRow尚未更新,所以DropDownOpened與舊行一起調用。 如果我離開單擊或雙擊右鍵單擊它工作正常。

這裏有點代碼:

OrderMenu.DropDownOpened += OrderMenu_DropDownOpened; 

而且方法

private void OrderMenu_DropDownOpened(object sender, EventArgs e) 
{ 
    GoToParentOrderBtn.Enabled = GetSelectedOrder()?.ParentOrderId != null; 
} 

private OrderViewModel GetSelectedOrder() 
{ 
    return (OrderViewModel)OrderList.CurrentRow.DataBoundItem; 
} 
+0

我提供了一個你的問題的答案:) –

+0

可能重複[右鍵單擊上下文菜單爲datagridview](http://stackoverflow.com/questions/1718389/right -click-context-menu-for-datagridview) –

+0

對不起 - 我應該指定我的gridview。我正在使用RadGridView – Larzix

回答

0

對不起,不指定我使用的是radgridview。

我發現一個related answer幫助我解決了我的問題。 我最終作出了延期(這樣我就可以用它周圍的所有應用程序)RadGridView這對鼠標按下觸發事件:

public partial class RadExtendedGridViewController : RadGridView 
{ 
    public RadExtendedGridViewController() 
    { 
     InitializeComponent(); 
     base.MouseDown += RadExtendedGridViewController_MouseDown; 
    } 

    private void RadExtendedGridViewController_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Right) 
     { 
      var element = this.ElementTree.GetElementAtPoint(e.Location); 
      GridDataCellElement cell = element as GridDataCellElement; 
      if (cell?.RowElement is GridDataRowElement) 
      { 
       Rows[cell.RowIndex].IsSelected = true; 
      } 
     } 
    } 
} 

然後我改變了我的GetSelectedOrder使用SelectedRows代替電流:

private OrderViewModel GetSelectedOrder() 
    { 
     return (OrderViewModel)OrderList.SelectedRows.FirstOrDefault()?.DataBoundItem; 
    } 

現在它按預期工作。感謝您花時間試圖幫助我:-)

0

使用此功能承諾,結束對當前小區中編輯的編輯操作。

更多信息here

相關問題