我目前正在使用OnMouseOver突出显示radgrid中的一行。我想知道是否可以使用OnMouseOver来选择行而不是突出显示它。
或者,如果radgrid失去焦点,我希望突出显示的行保持突出显示,例如弹出确认框时。
提前致谢。
答案 0 :(得分:2)
根据Telerik的文档,应该可以使用以下代码选择OnMouseOver项(如果您没有任何详细信息表,则可以使用if
语句,只需使用{{ 1}}阻止查找else
):
currentDataItem
答案 1 :(得分:1)
此处的其他答案不适用于WPF Telerik RadGridView,因为我们无法访问RowMouseOver事件。
对于WPF Telerik RadGridView,如果网格不包含UI元素,最好的方法是使用ChildrenOfType<>在带有IsMouseOver的Linq表达式中。
private void myGridView_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
MyCustomClass myClass = null;
var rows = this.myGridView.ChildrenOfType<GridViewRow>().Where(r => r.IsMouseOver == true);
foreach (var row in rows)
{
if (row is GridViewNewRow) break;
GridViewRow gvr = (GridViewRow)row;
myClass = (MyCustomClass)gvr.Item;
}
// do something with myClass here if we have found a row under mouse
}
答案 2 :(得分:0)
谢谢!您的解决方案运行良好,但即使AllowMultiRowSelection设置为False,当鼠标悬停在另一行上时,行也不会被取消选择。当鼠标悬停在行上时,以下代码将在radgrid中选择一行:
<script type="text/javascript">
function grdUsers_RowMouseOver(sender, eventArgs) {
var NumberItems = sender.get_masterTableView().get_dataItems().length;
for (var count = 0; count < NumberItems; count++) {
var currentDataItem = sender.get_masterTableView().get_dataItems()[count];
if (count == eventArgs.get_itemIndexHierarchical()) {
currentDataItem.set_selected(true);
}
else {
currentDataItem.set_selected(false);
}
}
}
</script>
我在以下位置调用了该函数:
<ClientSettings AllowColumnsReorder="True" ReorderColumnsOnClient="True">
<Selecting AllowRowSelect="True" />
<ClientEvents OnRowMouseOver="grdUsers_RowMouseOver" />
</ClientSettings>