Dear Support-Team,
I have a grid which has a context menu and row selection enabled. When I right click a row to open the context menu, the row selection is triggered as well.
I want to separate both events:
@if(SelectedOrder != null)
@SelectedOrder.CustomerID
<div class="container-fluid">
<SfGrid DataSource="@Orders" AllowSelection="true" Height="600px" ContextMenuItems="@(new List<Object>() { "Copy", new ContextMenuItemModel { Text = "Copy with headers", Target = ".e-content", Id = "copywithheader" } })">
<GridSelectionSettings Mode="SelectionMode.Row" Type="SelectionType.Single"></GridSelectionSettings>
<GridEvents RowSelected="RowSelectHandler" TValue="Order"></GridEvents>
<GridColumns>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" TextAlign="TextAlign.Right" Width="120"></GridColumn>
<GridColumn Field=@nameof(Order.CustomerID) HeaderText="Customer Name" Width="150"></GridColumn>
<GridColumn Field=@nameof(Order.OrderDate) HeaderText=" Order Date" Format="d" Type="ColumnType.Date" TextAlign="TextAlign.Right" Width="130"></GridColumn>
<GridColumn Field=@nameof(Order.Freight) HeaderText="Freight" Format="C2" TextAlign="TextAlign.Right" Width="120"></GridColumn>
</GridColumns>
</SfGrid>
</div>
@code{
public List<Order> Orders { get; set; }
public Order SelectedOrder;
protected override void OnInitialized()
{
Orders = Enumerable.Range(1, 75).Select(x => new Order()
{
OrderID = 1000 + x,
CustomerID = (new string[] { "ALFKI", "ANANTR", "ANTON", "BLONP", "BOLID" })[new Random().Next(5)],
Freight = 2.1 * x,
OrderDate = DateTime.Now.AddDays(-x),
}).ToList();
}
public class Order
{
public int? OrderID { get; set; }
public string CustomerID { get; set; }
public DateTime? OrderDate { get; set; }
public double? Freight { get; set; }
}
public void RowSelectHandler(RowSelectEventArgs<Order> args)
{
SelectedOrder = args.Data;
}
}
@using Syncfusion.Blazor.Grids
@using Syncfusion.Blazor.Navigations
@if(SelectedOrder != null)
@SelectedOrder.CustomerID
<div class="container-fluid">
<SfGrid DataSource="@Orders" @onmousedown="HandleMouseDown" AllowSelection="true" Height="600px" ContextMenuItems="@(new List<Object>() { "Copy", new ContextMenuItemModel { Text = "Copy with headers", Target = ".e-content", Id = "copywithheader" } })">
<GridSelectionSettings Mode="SelectionMode.Row" Type="SelectionType.Single"></GridSelectionSettings>
<GridEvents RowSelected="RowSelectHandler" TValue="Order"></GridEvents>
<GridColumns>
. . .
</GridColumns>
</SfGrid>
</div>
@code{
public List<Order> Orders { get; set; }
public Order SelectedOrder;
. . .
public bool IsLeftClick { get; set; }
public void RowSelectHandler(RowSelectEventArgs<Order> args)
{
if(IsLeftClick){
SelectedOrder = args.Data;
}
}
void HandleMouseDown(MouseEventArgs args)
{
if (args.Button == 2)
{
IsLeftClick = false; //set false when mouse right click
} else if (args.Button == 0)
{
IsLeftClick = true; //set true when mouse left click
}
}
} |