Your search did not match any results.

Focused Row

Documentation

This example demonstrates a TreeList widget that supports focused rows. The focusedRowKey option specifies the focused row. The onFocusedRowChanged callback function can be used to display additional information below the TreeList when the focused row changes. The focusedRowEnabled option enables row focusing.

@(Html.DevExtreme().TreeList<DevExtreme.NETCore.Demos.Models.TreeList.EmployeeTask>() .ID("treeList") .DataSource(d => d.Mvc() .Controller("TreeListTasks") .LoadAction("Tasks") .Key("Task_ID")) .ParentIdExpr("Task_Parent_ID") .HasItemsExpr("Has_Items") .Columns(columns => { columns.Add() .DataField("Task_ID") .Alignment(HorizontalAlignment.Left) .Width(100); columns.Add() .DataField("Task_Assigned_Employee_ID") .Caption("Assigned") .MinWidth(120) .Lookup(lookup => lookup .DataSource(ds => ds.Mvc() .Controller("TreeListTasks") .LoadAction("TaskEmployees") .Key("ID") ) .ValueExpr("ID") .DisplayExpr("Name") ); columns.Add() .DataField("Task_Status") .Caption("Status") .Width(160); columns.Add() .DataField("Task_Start_Date") .Caption("Start Date") .DataType(GridColumnDataType.Date) .Width(160); columns.Add() .DataField("Task_Due_Date") .Caption("Due Date") .DataType(GridColumnDataType.Date) .Width(160); }) .FocusedRowEnabled(true) .FocusedRowKey(4) .ShowBorders(true) .OnInitialized("onDataGridInitialized") .OnFocusedRowChanged("onFocusedRowChanged") ) <div class="task-info"> <div class="info"> <div class="task-subject"></div> <span class="task-assigned"></span> <span class="start-date"></span> </div> <div class="progress"> <span class="task-status"></span> <span class="task-progress"></span> </div> </div> <div class="options"> <div class="caption">Options</div> <div class="option"> <span>Focused row key</span> @(Html.DevExtreme().NumberBox() .ID("taskId") .Min(1) .Max(182) .Step(0) .OnInitialized("onTaskIdEditorInitialized") .OnValueChanged("onTaskIdEditorValueChanged") ) </div> </div> <script> var treeList, taskIdEditor; function onTaskIdEditorInitialized(e) { taskIdEditor = e.component; } function onTaskIdEditorValueChanged(e) { if (e.event && e.value > 0) { treeList.option("focusedRowKey", e.value); } } function onDataGridInitialized(e) { treeList = e.component; } function onFocusedRowChanged(e) { var rowData = e.row && e.row.data, assignedToData; if (rowData) { assignedToData = e.component.columnOption("Task_Assigned_Employee_ID").lookup.items[e.rowIndex] $(".task-subject").html(rowData.Task_Subject); $(".task-assigned").html(assignedToData.Name); $(".start-date").html(new Date(rowData.Task_Start_Date).toLocaleDateString()); $(".task-status").html(rowData.Task_Status); var progress = rowData.Task_Completion ? rowData.Task_Completion + "%" : ""; $(".task-progress").text(progress); $("#taskId").dxNumberBox("instance").option("value", treeList.option("focusedRowKey")); } } </script>
using Microsoft.AspNetCore.Mvc; using DevExtreme.NETCore.Demos.Models.SampleData; namespace DevExtreme.NETCore.Demos.Controllers { public class TreeListController : Controller { public ActionResult FocusedRow() { return View(); } } }
#treeList { max-height: 400px; } .task-info { font-family: Segoe UI; min-height: 100px; display: flex; flex-wrap: nowrap; border: 2px solid rgba(0, 0, 0, 0.1); padding: 16px; box-sizing: border-box; align-items: center; justify-content: space-between; } .info { display: flex; flex-direction: column; } .task-subject { line-height: 29px; font-size: 18px; font-weight: bold; } .progress { display: flex; flex-direction: column; white-space: pre; min-width: 105px; } .task-progress { line-height: 42px; font-size: 40px; font-weight: bold; } .options { margin-top: 20px; padding: 20px; background-color: rgba(191, 191, 191, 0.15); position: relative; } .caption { font-size: 18px; font-weight: 500; } .option { margin-top: 10px; } .option > .dx-numberbox { width: 200px; display: inline-block; vertical-align: middle; } .option > span { margin-right: 10px; }