Help us shape the 2021 DevExtreme Roadmap. Take our 5 minute survey.
Dismiss
Your search did not match any results.
Tree List

Focused Row

Documentation

This example demonstrates a TreeList UI component that supports focused rows. The focusedRowKey property 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 property enables row focusing.

@(Html.DevExtreme().TreeList() .ID("treeList") .DataSource(d => d.WebApi() .Controller("TreeListTasks/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(l => { l.DataSource(d => d.WebApi().Key("ID").LoadMode(DataSourceLoadMode.Raw).Controller("TreeListTasks/TaskEmployees")); l.ValueExpr("ID"); l.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, cellValue, assigned, taskEmployees = e.component.columnOption("Assigned").lookup.dataSource; if (rowData) { cellValue = e.component.cellValue(e.row.rowIndex, "Assigned"); taskEmployees.store.byKey(cellValue).done((item) => { assigned = item.Name; }); $(".task-subject").html(rowData.Task_Subject); $(".task-assigned").html(assigned); $(".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 System.Web.Mvc; using DevExtreme.MVC.Demos.Models.SampleData; namespace DevExtreme.MVC.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; }