Есть ли способ использовать OnMouseOver, чтобы выбрать RADGRID ROW?

StackOverflow https://stackoverflow.com/questions/3010503

  •  26-09-2019
  •  | 
  •  

Вопрос

Я в настоящее время подчеркивая ряд в Radgrid с использованием OnMouseOver. Я хотел бы знать, можно ли использовать OnMouseOver, чтобы выбрать ряд, а не выделить ее.

В качестве альтернативы, я хотел бы, чтобы подсвеченный ряд оставался подчеркнутым, если Radgrid теряет фокус, например, когда появится подтверждающий флажок.

Заранее спасибо.

Это было полезно?

Решение

Согласно документации Teleerik, должно быть возможно выбрать элемент OnMouseOver, используя следующий код (если у вас нет данных, которые вы не можете NIX if заявление и просто используйте код из else Блок, чтобы найти currentDataItem):

function RadGrid1_RowMouseOver(sender, eventArgs) {
    var currentDataItem = null;

    // clear all currently selected items before selecting new
    sender.get_masterTableView().clearSelectedItems();

    if (eventArgs.get_itemIndexHierarchical().indexOf(':') > 0)
    {
        var detailTableIndex = eventArgs.get_itemIndexHierarchical().split(':')[0];
        var rowIndex = eventArgs.get_itemIndexHierarchical().split(':')[1].split('_')[1];
        currentDataItem = sender.get_detailTables()[detailTableIndex].get_dataItems()[rowIndex];
    }
    else
    {
        currentDataItem = sender.get_masterTableView().get_dataItems()[eventArgs.get_itemIndexHierarchical()];
    }

    if (currentDataItem != null)
    {
        currentDataItem.set_selected(true);
    }
}

Другие советы

Другие ответы здесь не работают с WPF Teleerik RadgridView, поскольку у нас нет доступа к событию ROWMOSEOVER.

Для WPF Teleerik RadgridView наилучший подход, если Grid не содержит элементы пользовательского интерфейса, состоит в том, чтобы использовать DetailOFType <> в выражении LINQ с ISMOUSEOVER.

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
}

Спасибо! Ваше решение работало великолепно, но строки не станут раскрытыми, когда мы набрасываем еще один ряд, даже если RutoMultiRowselection был установлен на ложь. Следующий код выберет одну строку в 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top