2010-06-09 4 views

답변

2

Telerik 설명서에 따르면 다음 코드를 사용하여 OnMouseOver 항목을 선택할 수 있습니다 (세부 테이블이없는 경우 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); 
    } 
} 
0

고마워요! 솔루션은 훌륭하게 작동했지만 AllowMultiRowSelection이 False로 설정되어 있어도 다른 행에 마우스를 올리면 행이 선택 취소되지 않습니다. 마우스가 행을 가리킬 때 다음 코드는 radgrid에 하나의 행을 선택합니다 :

<ClientSettings AllowColumnsReorder="True" ReorderColumnsOnClient="True"> 
        <Selecting AllowRowSelect="True" /> 
        <ClientEvents OnRowMouseOver="grdUsers_RowMouseOver" /> 
       </ClientSettings> 
+1

위의 예에서 찾고자했던 기능을 추가했습니다. 그리드의 모든 항목을 루핑하는 대신 clearSelectedItems()를 사용했습니다. 그리드에 많은 행이 포함되어있을 때 성능이 향상되어야합니다. 또한, 더 큰 그림이 여기에 무엇인지 확실하지 않지만 mouseover에서 행을 선택 하시겠습니까? 사용자가 신중하지 않으면 그리드에서 마우스를 움직일 때 선택하지 않으려는 다른 행을 선택할 수 있습니다. –

+0

많은 의무가 있습니다! 내 경우에 행을 선택하면 행을 강조 표시하는 것 외에는 기능이 없습니다. 내가 직면 한 문제는 사용자가 행 삭제 버튼을 클릭하고 확인 상자가 팝업되어 radgrid가 포커스를 잃게 될 때 행이 강조 표시되지 않는 것입니다 (행을 선택하지 않은 경우). 이제 사용자는 삭제를 확인할 때 올바른 행을 삭제할 것이라는 확신을 갖게됩니다. – Starwfanatic

1

여기에 다른 답변이 작동하지 않습니다 : 나는 다음과 같은 위치에있는 함수를 호출

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

우리는 RowMouseOver 이벤트에 액세스 할 수 없으므로 WPF Telerik RadGridView를 사용합니다.

WPF Telerik RadGridView의 경우 그리드에 UI 요소가 포함되어 있지 않은 경우 가장 좋은 방법은 Linx 식에서 IsMouseOver를 사용하여 ChildrenOfType <>을 사용하는 것입니다.

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 
} 
관련 문제