有没有办法使用OnMouseOver来选择一个radgrid行?

时间:2010-06-09 22:38:19

标签: c# asp.net telerik radgrid

我目前正在使用OnMouseOver突出显示radgrid中的一行。我想知道是否可以使用OnMouseOver来选择行而不是突出显示它。

或者,如果radgrid失去焦点,我希望突出显示的行保持突出显示,例如弹出确认框时。

提前致谢。

3 个答案:

答案 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>