RadContextMenu.在RadGridView之前调用dropdownnoopened.CurrentRow改变

本文关键字:dropdownnoopened CurrentRow 改变 调用 RadGridView RadContextMenu | 更新日期: 2023-09-27 18:13:14

我正试图根据我的RadGridView(编辑:OrderList)中当前选择的行更改我的RadContextMenu上的项目。如果当前行中的绑定项具有正确的属性值,我希望启用该项。

问题是,当我直接右键单击一行打开RadContextmenu时,CurrentRow尚未更新,因此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;
}

RadContextMenu.在RadGridView之前调用dropdownnoopened.CurrentRow改变

Use dataGridView.EndEdit();此函数提交并结束当前正在编辑的单元格的编辑操作。

更多信息在这里

对不起,我没有指定我使用的是radgridview

我找到了一个相关的答案,帮助我解决了我的问题。我最终做了一个扩展(所以我可以在应用程序周围使用它)到RadGridView,它在mousedown时触发一个事件:

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而不是Current:

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

现在它按预期工作了。谢谢你花时间帮助我:-)

相关文章:
  • 没有找到相关文章