DxTreeList.DataColumnCellDisplayTemplate Property
Specifies a common template used to display all data column cells in the TreeList.
Namespace: DevExpress.Blazor
Assembly: DevExpress.Blazor.v24.2.dll
NuGet Package: DevExpress.Blazor
Declaration
[Parameter]
public RenderFragment<TreeListDataColumnCellDisplayTemplateContext> DataColumnCellDisplayTemplate { get; set; }
Property Value
Type | Description |
---|---|
RenderFragment<TreeListDataColumnCellDisplayTemplateContext> | Template content. |
Remarks
The DataColumnCellDisplayTemplate
allows you to specify custom content and change the appearance of cells in all TreeList data columns. To define a template for individual TreeList data columns, use the DxTreeListDataColumn.CellDisplayTemplate.
The DataColumnCellDisplayTemplate
accepts a TreeListDataColumnCellDisplayTemplateContext object as the context
parameter. You can use the parameter’s members to get information about a column cell (DataColumn, Value, DisplayText, VisibleIndex). You can also access the TreeList object and use its members to obtain additional information about the TreeList.
The following example customizes appearance of column cells to distinguish between odd and even rows:
@inject EmployeeTaskService EmployeeTaskService
<style>
.my-style {
color: blue;
font-weight: bold;
}
.my-date-style {
color: mediumblue;
font-weight: bold;
}
</style>
<DxTreeList Data="TreeListData" KeyFieldName="Id" ParentKeyFieldName="ParentId">
<Columns>
<DxTreeListDataColumn FieldName="Name" Caption="Task" />
<DxTreeListDataColumn FieldName="EmployeeName" />
<DxTreeListDataColumn FieldName="StartDate" />
<DxTreeListDataColumn FieldName="DueDate" />
</Columns>
<DataColumnCellDisplayTemplate>
@{
if (context.VisibleIndex % 2 == 1) {
if (context.DataColumn.FieldName.Contains("Date")) {
<span class="my-date-style">@context.DisplayText</span>
}
else {
<span class="my-style">@context.DisplayText</span>
}
}
else {
<span>@context.DisplayText</span>
}
}
</DataColumnCellDisplayTemplate>
</DxTreeList>
@code {
List<EmployeeTask> TreeListData { get; set; }
protected override void OnInitialized() {
TreeListData = EmployeeTaskService.GenerateData();
}
}
For more information about templates in the TreeList component, refer to the following topic: Templates in Blazor TreeList.
Cell Editing Specifics
During edit operations, the TreeList applies user changes only to the edit model and keeps the data item unchanged. DataItem, DisplayText, and Value context parameters return information about the data item, not the edit model. As a result, values of these properties do not reflect unsaved changes.
When the EditMode is set to CellEdit, only one TreeList cell can be in edit mode while others are in display mode. The CellDisplayTemplate
affects contents of cells in display mode, including cells with modified values. To display unsaved changes in the CellDisplayTemplate
, use the edit model’s field values instead of properties of the template’s context
parameter:
@inject EmployeeTaskService EmployeeTaskService
<DxTreeList Data="TreeListData"
KeyFieldName="Id"
ParentKeyFieldName="ParentId"
EditMode="TreeListEditMode.EditCell"
EditModelSaving="TreeList_EditModelSaving"
DataItemDeleting="TreeList_DataItemDeleting"
CustomizeEditModel="TreeList_CustomizeEditModel">
<Columns>
<DxTreeListCommandColumn EditButtonVisible="false"
CancelButtonVisible="false"
SaveButtonVisible="false" />
<DxTreeListDataColumn FieldName="Name" Caption="Task" />
<DxTreeListDataColumn FieldName="EmployeeName" />
<DxTreeListDataColumn FieldName="StartDate" />
<DxTreeListDataColumn FieldName="DueDate" />
</Columns>
<DataColumnCellDisplayTemplate Context="displayContext">
@{
string value;
if (displayContext.TreeList.IsEditingRow(displayContext.VisibleIndex)) {
var editModel = (EmployeeTask)displayContext.TreeList.GetEditContext().Model;
var fieldName = displayContext.DataColumn.FieldName;
value = editModel.GetType().GetProperty(fieldName).GetValue(editModel).ToString();
}
else
value = displayContext.DisplayText;
}
<span>@value</span>
</DataColumnCellDisplayTemplate>
</DxTreeList>
@code {
List<EmployeeTask> TreeListData { get; set; }
protected override void OnInitialized() {
TreeListData = EmployeeTaskService.GenerateData();
}
void TreeList_CustomizeEditModel(TreeListCustomizeEditModelEventArgs e) {
if (e.IsNew) {
var newTask = (EmployeeTask)e.EditModel;
newTask.Id = TreeListData.Max(x => x.Id) + 1;
if (e.ParentDataItem != null)
newTask.ParentId = ((EmployeeTask)e.ParentDataItem).Id;
}
}
async Task TreeList_EditModelSaving(TreeListEditModelSavingEventArgs e) {
if (e.IsNew)
TreeListData.Add((EmployeeTask)e.EditModel);
else
e.CopyChangesToDataItem();
}
async Task TreeList_DataItemDeleting(TreeListDataItemDeletingEventArgs e) {
TreeListData.Remove((EmployeeTask)e.DataItem);
}
}