현재 현재 OnMouseOver를 사용하여 radgrid에서 행을 강조 표시하고 있습니다. OnMouseOver를 사용하여 강조 표시하지 않고 행을 선택할 수 있는지 알고 싶습니다.RadGrid 행을 선택하기 위해 OnMouseOver를 사용하는 방법이 있습니까?
또는 radgrid가 포커스를 잃는 경우 (예 : 확인 상자가 팝업 될 때) 강조 표시된 행을 강조 표시하고 싶습니다.
미리 감사드립니다.
현재 현재 OnMouseOver를 사용하여 radgrid에서 행을 강조 표시하고 있습니다. OnMouseOver를 사용하여 강조 표시하지 않고 행을 선택할 수 있는지 알고 싶습니다.RadGrid 행을 선택하기 위해 OnMouseOver를 사용하는 방법이 있습니까?
또는 radgrid가 포커스를 잃는 경우 (예 : 확인 상자가 팝업 될 때) 강조 표시된 행을 강조 표시하고 싶습니다.
미리 감사드립니다.
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);
}
}
고마워요! 솔루션은 훌륭하게 작동했지만 AllowMultiRowSelection이 False로 설정되어 있어도 다른 행에 마우스를 올리면 행이 선택 취소되지 않습니다. 마우스가 행을 가리킬 때 다음 코드는 radgrid에 하나의 행을 선택합니다 :
<ClientSettings AllowColumnsReorder="True" ReorderColumnsOnClient="True">
<Selecting AllowRowSelect="True" />
<ClientEvents OnRowMouseOver="grdUsers_RowMouseOver" />
</ClientSettings>
여기에 다른 답변이 작동하지 않습니다 : 나는 다음과 같은 위치에있는 함수를 호출
<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
}
위의 예에서 찾고자했던 기능을 추가했습니다. 그리드의 모든 항목을 루핑하는 대신 clearSelectedItems()를 사용했습니다. 그리드에 많은 행이 포함되어있을 때 성능이 향상되어야합니다. 또한, 더 큰 그림이 여기에 무엇인지 확실하지 않지만 mouseover에서 행을 선택 하시겠습니까? 사용자가 신중하지 않으면 그리드에서 마우스를 움직일 때 선택하지 않으려는 다른 행을 선택할 수 있습니다. –
많은 의무가 있습니다! 내 경우에 행을 선택하면 행을 강조 표시하는 것 외에는 기능이 없습니다. 내가 직면 한 문제는 사용자가 행 삭제 버튼을 클릭하고 확인 상자가 팝업되어 radgrid가 포커스를 잃게 될 때 행이 강조 표시되지 않는 것입니다 (행을 선택하지 않은 경우). 이제 사용자는 삭제를 확인할 때 올바른 행을 삭제할 것이라는 확신을 갖게됩니다. – Starwfanatic