blazor-devexpress-dot-blazor-dot-dxlistbox-2-9ed84095.md
Fires when selection changes.
Namespace : DevExpress.Blazor
Assembly : DevExpress.Blazor.v25.2.dll
NuGet Package : DevExpress.Blazor
[Parameter]
public EventCallback<SelectedDataItemsChangedEventArgs<TData>> SelectedDataItemsChanged { get; set; }
The SelectedDataItemsChanged event's data class is SelectedDataItemsChangedEventArgs<TData>. The following properties provide information specific to this event:
| Property | Description |
|---|---|
| ChangeSource | Identifies an action that causes selection change. Inherited from SelectionChangedEventArgs. |
| DataItems | Returns a collection of currently selected items. |
Handle the SelectedDataItemsChanged event to respond to item selection changes. This event fires in the following cases:
The SelectedDataItemsChanged event allows you to use the following argument properties in a handler:
ChangeSource to identify an action that causes selection change.
DataItems to obtain information about the selected items.
<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();
}
}
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