【发布时间】:2021-11-10 09:04:30
【问题描述】:
简化问题,我在拖动时需要选择许多按钮,我正在使用 blazor 服务器端,所以我尝试使用 mousedown 事件(也许我必须使用 mouseover)但我只能选择第一个一。 我的问题是,我可以在不使用 javascript(使用 razor 语法和 c#)的情况下做我需要的事情吗,这是我的 razor 代码:
@page "/"
<h1>Multiple selection example</h1>
@foreach (Button btn in buttonList)
{
<button disabled="@btn.selected"
@onclick="(e) => SelectOne(e, btn)"
@onmouseup="(e) => Over(e, btn)">
button id @btn.number
</button>
}
@code{
public List<Button> buttonList = new() {
new Button() { number = 1 },
new Button() { number = 2 },
new Button() { number = 3 },
new Button() { number = 4 },
new Button() { number = 5 }
};
public void SelectOne(MouseEventArgs e, Button btn)
{
btn.selected = !btn.selected;
}
public void Over(MouseEventArgs e, Button btn) {
if (e.CtrlKey)
{
btn.selected = !btn.selected;
}
}
public class Button
{
public int number { get; set; }
public bool selected { get; set; } = false;
}
}
所以当我“鼠标悬停”在按钮上时,我必须“选择”它们。
【问题讨论】:
-
我可以看到您正在尝试同时更改多个按钮的禁用状态。但是我认为任何时候只有一个输入可以拥有焦点,并触发一个按钮事件。
-
是的,但是当我向下拖动 @MrCakaShaunCurtis 时,也许有一种方法可以触发每个按钮的事件
-
我很确定没有办法直接在 Blazor 中执行此操作。通常情况下,这并非不可能,但您将需要一个 JS 库来处理使用鼠标事件突出显示的按钮,然后通过 Blazor JSInterop 将列表传递给影响更改并引发 StateHasChanged 事件的方法在页面上。
-
当然我认为你是对的也许我需要 js。有了你的部分想法“几乎”得到它,但我不认为解决方案可以接近更多,我把它放在答案上检查它!
-
@MrCakaShaunCurtis 我终于找到了解决方案,检查一下!
标签: .net razor blazor multiple-select