Skip to main content
All docs
V25.1
  • DxTreeList.CustomValidators Property

    Allows you to declare custom validator components.

    Namespace: DevExpress.Blazor

    Assembly: DevExpress.Blazor.v25.1.dll

    NuGet Package: DevExpress.Blazor

    Declaration

    [Parameter]
    public RenderFragment CustomValidators { get; set; }

    Property Value

    Type Description
    RenderFragment

    A template that declares custom validators.

    Remarks

    The TreeList uses the DataAnnotationsValidator to validate user input based on data annotation attributes defined in the data model. You can also create custom validator components as described in the following Microsoft topic: Validator components. To enable custom validation in the TreeList, declare validator components in the CustomValidators template.

    Note that custom validators override the standard DataAnnotationsValidator. To use the DataAnnotationsValidator in addition to custom validators, declare it in the CustomValidators template explicitly.

    The following code snippet uses a custom validator to check the Due Date field value:

    @inject EmployeeTaskService EmployeeTaskService
    @using CustomValidation.Pages
    
    <DxTreeList Data="TreeListData"
                KeyFieldName="Id"
                ParentKeyFieldName="ParentId"
                EditMode="TreeListEditMode.EditForm"
                CustomizeEditModel="TreeList_CustomizeEditModel"
                EditModelSaving="TreeList_EditModelSaving"
                DataItemDeleting="TreeList_DataItemDeleting">
        <Columns>
            <DxTreeListCommandColumn />
            <DxTreeListDataColumn FieldName="Name" Caption="Task" />
            <DxTreeListDataColumn FieldName="EmployeeName" />
            <DxTreeListDataColumn FieldName="StartDate" />
            <DxTreeListDataColumn FieldName="DueDate" />
        </Columns>
        <EditFormTemplate Context="EditFormContext">
            <DxFormLayout CssClass="w-100">
                <DxFormLayoutItem Caption="Task:" ColSpanMd="6">
                    @EditFormContext.GetEditor("Name")
                </DxFormLayoutItem>
                <DxFormLayoutItem Caption="Employee Name:" ColSpanMd="6">
                    @EditFormContext.GetEditor("EmployeeName")
                </DxFormLayoutItem>
                <DxFormLayoutItem Caption="Start Date:" ColSpanMd="6">
                    @EditFormContext.GetEditor("StartDate")
                </DxFormLayoutItem>
                <DxFormLayoutItem Caption="Due Date:" ColSpanMd="6">
                    @EditFormContext.GetEditor("DueDate")
                </DxFormLayoutItem>
            </DxFormLayout>
        </EditFormTemplate>
        <CustomValidators>
            <MyCustomValidator DataItemValidating="ValidateTreeListData" />
        </CustomValidators>
    </DxTreeList>
    
    @code {
        List<EmployeeTask> TreeListData { get; set; }
    
        protected override void OnInitialized() {
            TreeListData = EmployeeTaskService.GenerateData();
        }
        void ValidateTreeListData(ValidationMessageStoreEventArgs e) {
            var task = (EmployeeTask)e.EditModel;
            if (task.DueDate < task.StartDate) {
                e.AddError(nameof(task.DueDate), "The due date should be greater than the start date.");
            }
        }
        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);
        }
    }
    

    Blazor TreeList Editing Custom Validation

    Refer to the following topic for more information: Validate User Input in Blazor TreeList.

    See Also