这个问题有很多,并且有很多方法可以实现它。这是您如何做到这一点的粗略草图。我将假设您使用的是 JQuery,因为这样会更容易。
要在点击时突出显示一行或单元格,请将点击事件附加到每个:
$("tr").click(function() { $(this).css('background', 'yellow'); });
$("td").click(function() { $(this).css('background', 'lightblue'); });
当然,您还需要取消突出显示它们,但我们稍后会谈到。
要获取一行的数据(我假设您的意思是在服务器上,而不是在客户端上),您必须进行 AJAX 调用。获取行的 id 而不是将整行传回来是最容易的。点击事件内部是这样的:
var row_id = $(this).closest("tr").find("input[type=hidden]").attr("value");
$.get("?row_id=" + row_id);
这假设您已将隐藏输入添加到 Webgrid 中的每一行及其行 ID 值。
如果您需要访问选定的第一行单元格,您可以在 click 函数中使用它:
var cellOne = this.cells[0].innerHTML ;
我还建议您的点击功能应该只链接到某个表格(否则将在所有 tr 元素上启用选择)并使用在选择更改时添加和删除的 css 类。
$('#MainTable tr').click(function () {
$(this).addClass('select');
$('#MainTable tr').not(this).removeClass('select');
});
要上下移动,您可以向窗口添加“keyup”事件侦听器并处理向上/向下。有关详细信息,请参见此处:jQuery kepress detection on left, right arrows and space bar。您必须使用 Javascript 来跟踪当前选择的行,以便根据需要突出显示/取消突出显示。
最后,对于最后一个问题,您可以在用户点击或箭头键指向不同的行时触发 AJAX 调用(或 Javascript 调用)。您已经在跟踪选择了哪个行号,因此您可以将其与事件一起发送:
$.get("?event=row_selection_changed&row_id=" + row_id);