Your search did not match any results.
DataGrid

Focused Row

Documentation

This example demonstrates a DataGrid 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 DataGrid when the focused row changes. The focusedRowEnabled option enables row focusing.

@(Html.DevExtreme().DataGrid() .DataSource(d => d.OData() .Url("https://js.devexpress.com/Demos/DevAV/odata/Tasks") .Key("Task_ID") .Expand("ResponsibleEmployee") ) .DataSourceOptions(d => d.Select(new string[] { "Task_ID", "Task_Subject", "Task_Start_Date", "Task_Status", "Task_Description", "Task_Completion", "ResponsibleEmployee/Employee_Full_Name" }) ) .Columns(columns => { columns.Add() .DataField("Task_ID") .Width(80); columns.Add() .DataField("Task_Start_Date") .Caption("Start Date") .DataType(GridColumnDataType.Date); columns.Add() .DataField("ResponsibleEmployee.Employee_Full_Name") .Caption("Assigned To") .AllowSorting(false); columns.Add() .DataField("Task_Subject") .Caption("Subject") .Width(350); columns.Add() .DataField("Task_Status") .Caption("Status"); }) .FocusedRowEnabled(true) .FocusedRowKey(117) .ShowBorders(true) .Paging(p => p.PageSize(10)) .OnInitialized("onDataGridInitialized") .OnFocusedRowChanging("onFocusedRowChanging") .OnFocusedRowChanged("onFocusedRowChanged") ) <div class="task-info"> <div class="info"> <div class="task-subject"></div> <p class="task-details"></p> </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() .Min(1) .Max(183) .Step(0) .OnInitialized("onTaskIdEditorInitialized") .OnValueChanged("onTaskIdEditorValueChanged") ) </div> </div> <script> var dataGrid, taskIdEditor; function onTaskIdEditorInitialized(e) { taskIdEditor = e.component; } function onTaskIdEditorValueChanged(e) { if (e.event && e.value > 0) { dataGrid.option("focusedRowKey", e.value); } } function onDataGridInitialized(e) { dataGrid = e.component; } function onFocusedRowChanging(e) { var rowsCount = e.component.getVisibleRows().length, pageCount = e.component.pageCount(), pageIndex = e.component.pageIndex(); if(e.event.key && e.prevRowIndex === e.newRowIndex) { if(e.newRowIndex === rowsCount - 1 && pageIndex < pageCount - 1) { e.component.pageIndex(pageIndex + 1).done(function() { e.component.option("focusedRowIndex", 0); }); } else if(e.newRowIndex === 0 && pageIndex > 0) { e.component.pageIndex(pageIndex - 1).done(function() { e.component.option("focusedRowIndex", rowsCount - 1); }); } } } function onFocusedRowChanged(e) { $(".task-subject").html(e.row.data.Task_Subject); $(".task-details").html(e.row.data.Task_Description); $(".task-status").html(e.row.data.Task_Status); var progress = e.row.data.Task_Completion ? e.row.data.Task_Completion + "%" : ""; $(".task-progress").text(progress); taskIdEditor.option("value", e.component.option("focusedRowKey")); } </script>
using DevExtreme.MVC.Demos.Models; using DevExtreme.MVC.Demos.Models.DataGrid; using DevExtreme.MVC.Demos.Models.SampleData; using System; using System.Linq; using System.Web.Mvc; namespace DevExtreme.MVC.Demos.Controllers { public class DataGridController : Controller { public ActionResult FocusedRow() { return View(); } } }
.task-info { font-family: Segoe UI; min-height: 200px; display: flex; flex-wrap: nowrap; border: 2px solid rgba(0, 0, 0, 0.1); padding: 16px; box-sizing: border-box; align-items: baseline; justify-content: space-between; } .task-subject { line-height: 29px; font-size: 18px; font-weight: bold; } .task-details { line-height: 22px; font-size: 14px; margin-top: 0; margin-bottom: 0; } .progress { display: flex; flex-direction: column; white-space: pre; min-width: 105px; } .info { margin-right: 40px; } .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; }