Back to Devexpress

DxListBox<TData, TValue>.SelectedDataItemsChanged Event

blazor-devexpress-dot-blazor-dot-dxlistbox-2-9ed84095.md

latest6.2 KB
Original Source

DxListBox<TData, TValue>.SelectedDataItemsChanged Event

Fires when selection changes.

Namespace : DevExpress.Blazor

Assembly : DevExpress.Blazor.v25.2.dll

NuGet Package : DevExpress.Blazor

Declaration

csharp
[Parameter]
public EventCallback<SelectedDataItemsChangedEventArgs<TData>> SelectedDataItemsChanged { get; set; }

Event Data

The SelectedDataItemsChanged event's data class is SelectedDataItemsChangedEventArgs<TData>. The following properties provide information specific to this event:

PropertyDescription
ChangeSourceIdentifies an action that causes selection change. Inherited from SelectionChangedEventArgs.
DataItemsReturns a collection of currently selected items.

Remarks

Handle the SelectedDataItemsChanged event to respond to item selection changes. This event fires in the following cases:

  • When users change item selection.
  • When Value and Values properties are changed at runtime or in code. This also refers to the first render.

The SelectedDataItemsChanged event allows you to use the following argument properties in a handler:

razor
<DxButton Click="SelectAll" Text="Select All Items" />
<DxButton Click="DeselectAll" Text="Deselect All Items" />

<DxListBox Data="@Staff.DataSource"
           @ref=_listBox
           ValueFieldName="@nameof(Person.Id)"
           TextFieldName="@nameof(Person.Text)"
           SelectionMode="ListBoxSelectionMode.Multiple"
           ShowCheckboxes="true"
           ShowSelectAllCheckbox="true"
           @bind-Values="@Values"
           SelectedDataItemsChanged="(SelectedDataItemsChangedEventArgs<Person> args) =>
                                                OnSelectedDataItemsChanged(args)" />

<p>@msg</p>

@code {
    string msg;
    DxListBox<Person, int> _listBox;

    IEnumerable<int> Values { get; set; } = Staff.DataSource.Take(3).Select(t => t.Id);

    void OnSelectedDataItemsChanged(SelectedDataItemsChangedEventArgs<Person> args) {
        var selected = args.DataItems?.ToList() ?? new List<Person>();

        var sourceText = args.ChangeSource switch {
            SelectionChangeSource.ParameterChange => "Selection is set/changed in code.",
            SelectionChangeSource.ApiCall => "Selection is changed by an API call.",
            _ => "Selection is changed by a user action."
        };

        msg = selected.Count == 0
            ? $"{sourceText} No items selected."
            : $"{sourceText} Selected ({selected.Count}): " +
              string.Join(", ", selected.Select(p => $"{p.FirstName} {p.LastName}"));
    }

    async Task SelectAll(MouseEventArgs args) {
        await MyListBox.SelectAllAsync();
    }
    async Task DeselectAll(MouseEventArgs args) {
        await MyListBox.DeselectAllAsync();
    }
}
csharp
namespace StaffData {
    public static class Staff {
        private static readonly Lazy<List<Person>> dataSource = new Lazy<List<Person>>(() => {
            var dataSource = new List<Person>() {
                new Person() { Id= 0 , FirstName="John", LastName="Heart", Department=Department.Electronics },
                new Person() { Id= 1 , FirstName="Samantha", LastName="Bright", Department=Department.Motors },
                new Person() { Id= 2 , FirstName="Arthur", LastName="Miller", Department=Department.Software },
                new Person() { Id= 3 , FirstName="Robert", LastName="Reagan", Department=Department.Electronics },
                new Person() { Id= 4 , FirstName="Greta", LastName="Sims", Department=Department.Motors },
                new Person() { Id= 5 , FirstName="Brett", LastName="Wade", Department=Department.Software },
                new Person() { Id= 6 , FirstName="Sandra", LastName="Johnson", Department=Department.Electronics },
                new Person() { Id= 7 , FirstName="Edward", LastName="Holmes", Department=Department.Motors },
                new Person() { Id= 8 , FirstName="Barbara", LastName="Banks", Department=Department.Software },
                new Person() { Id= 9 , FirstName="Kevin", LastName="Carter", Department=Department.Electronics },
                new Person() { Id= 10, FirstName="Cynthia", LastName="Stanwick", Department=Department.Motors },
                new Person() { Id= 11, FirstName="Sam", LastName="Hill", Department=Department.Electronics }};
            return dataSource;
        });
        public static List<Person> DataSource { get { return dataSource.Value; } }
    }

    public class Person {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public Department Department { get; set; }
        public string Text => $"{FirstName} {LastName} ({Department} Dept.)";
        public override bool Equals(object obj) {
            if (obj is Person typedObj) {
                return (this.Id == typedObj.Id) && (this.FirstName == typedObj.FirstName) && (this.LastName == typedObj.LastName)
                && (this.Department == typedObj.Department);
            }
            return base.Equals(obj);
        }
        public override int GetHashCode() {
            return HashCode.Combine(Id, FirstName, LastName);
        }
    }

    public enum Department { Motors, Electronics, Software }
}

See Also

DxListBox<TData, TValue> Class

DxListBox<TData, TValue> Members

DevExpress.Blazor Namespace