asp.net 如何在MudBlazor中检测对表行的双击?

kd3sttzy  于 2022-12-15  发布在  .NET
关注(0)|答案(3)|浏览(194)

我正在使用MudBlazor,我想检测一个表行上的双击并对事件做出React。但是,API of the table.中没有列出双击。单击很容易用OnRowClick回调(另请参见here on SO)完成。没有与双击等效的函数。
我尝试将Blazor事件ondblclick

<MudTd @ondblclick="OnOrderDbClicked">
    // ...
<MudTd/>

我对此有两个问题:
1.我可以捕捉到双击,但是我不能让它知道被点击的行(对此我有一个变通方法)。
1.我还必须在每个单元格中添加to,因为<RowTemplate/>元素不接受它。
我只有一个拐杖问题1:将变量MyOrderVM MyItem绑定到表的SelectedItem项目参数,并在双击调用的方法中访问对象(因为a double click also causes two single clicks选择了项目)。
我还没有做过很多测试,但似乎这是可行的,但有没有更好的解决办法?或者我担心太多的副作用?

nxagd54h

nxagd54h1#

正如您所说的,目前还没有像OnRowClick那样的开箱即用的双击方式,但是您可以随意创建一个issue in the repo
作为一种解决方法,您可以使用方法1,但需要做一些调整,以停止click事件向MudTable的传播。

<MudTd>
  // the click is handled by the div and not bubbling up to the MudTd
  <div @onclick="@EmptyCallback" @onclick:stopPropagation="true" 
              @ondblclick="@( (x) => DoSomething(context))" >
     // ...
  </div>
<MudTd/>

这里有一个MudBlazor Playground来显示它。
免责声明:
我是MudBlazor的撰稿人

rqqzpn5f

rqqzpn5f2#

MudTd中有一个EventCallbackondblclick。你可以调用它并传递一个带有你想要的参数的方法。见下面的示例代码。

<RowTemplate>
   <MudTd @ondblclick="@( (x) => DoubleClickEvent(context))">
      @context.SomeItem
   </MudTd>
</RowTemplate>

@code节中创建一个方法,并按照回调中的命名方式命名。

private void DoubleClickEvent(ContextModel model)
{
   // Do something with the model.
}

希望能帮上忙。

slhcrj9b

slhcrj9b3#

更新:

对于在搜索中找到这个的人来说,MudBlazor现在确实有一个双击的指示器。
它不是explixit参数,而是OnRowClick参数的一部分。在TableRowClickEventArgs it提供程序中,有一个属性MouseEventArgs,该属性具有属性Detail。此属性的文档说明:
在短时间内发生的连续单击次数,递增1。
因此,通过检查2,你可以对双击做出React。我已经在我自己的应用程序中使用过这个,可以确认它的工作原理。

相关问题