Art*_*hur 4 c# jquery .net-core asp.net-core blazor
我目前正在学习 C# Blazor 框架,但我面临一个问题,如何获取我点击的 HTML 元素?
我需要它来获取它在 DOM 和父 HTML 元素中的位置。
例如,JQuery 的经典方式:
$('selector').click(function (event) {
alert($(this).index());
});
Run Code Online (Sandbox Code Playgroud)
我知道,Blazor 中有 @onclick 属性,例如:
<tr @onclick="OnYes">...</tr>
@functions {
ElementReference inputTypeFileElement;
public async Task MainTableOnClick(MouseEventArgs e)
{
Console.WriteLine("clicked!");
}
}
Run Code Online (Sandbox Code Playgroud)
如何获取被点击的 TR HTML 元素的索引?
我的任务是将 Windows 窗体应用程序转换为 Web 版本。旧的 Windows 窗体有 DataGridView,它的每一行也有 onClick 事件和标记对象。当 DataGridView 的某些行被点击时,onClick 获取该行的 Tag 对象并用它来将数据填充到表单上的另一个 DataGridView。所以,我需要知道,单击哪一行从某个对象(它可以是 DataTable,或者更简单地说,是 Array)获取数据。基于行索引和数组中的索引,我需要获取数据以填充网页上的另一个表。
因此,第一个表是客户(姓名、姓氏等...)。
当单击带有客户端的某些行时,我需要在表中获取行(客户端)索引。通过该索引,我将从客户端数组中获取数据。通过找到 Client 对象,我计划动态填充页面上的另一个表。
在这种情况下,您可以使用JSInterop
或者
<tr @onclick="() => TrClickedAtIndex(0)">...</tr>
@code {
ElementReference inputTypeFileElement;
public void TrClickedAtIndex(int index)
{
Console.WriteLine($"tr clicked at index {index}!");
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想获取元素,可以使用 a@ref返回元素,但通常在 Blazor 中,您对元素不感兴趣(就像在 JQuery 中一样),而是对它们相关的内容感兴趣。
我创建了这个简单的 BlazorFiddle,它在表中列出了三个字符串。它与其他答案类似,但它表现出了一点问题 - 当从循环或枚举传递值时,您需要分配它。
https://blazorfiddle.com/s/br8lwsl2
这显示了三个字符串的表。当您单击一行时,它会传递所单击行中的数据项 - 而不仅仅是索引。
int index = i;
<tr @onclick="()=> ClickedRow(list[index])" ><td>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
7778 次 |
| 最近记录: |