devexpress/agent-skills/devexpress-blazor-combobox

Claude Code and agent skill by devexpress/agent-skills

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Build and configure the DevExpress Blazor ComboBox (DxComboBox) — a drop-down/select editor for Blazor Server, WebAssembly, and Hybrid apps. Use for data binding (sync/async), searching/filtering, grouping, virtualization, multi-column item lists, templates (item/edit box), validation in EditForm, Clear button and custom buttons, and cascading combo boxes. Also use for DxComboBox, combo box, dropdown, select, item picker, AllowUserInput, SearchMode, and editor feature comparisons or migration s…

Install

npx vskill@latest install devexpress/agent-skills/devexpress-blazor-combobox

SKILL.md

DevExpress Blazor ComboBox

DxComboBox<TData, TValue> is a text editor with a searchable drop-down list. It binds to strongly-typed collections or custom objects, supports multi-column layouts, grouping, virtual scrolling, cascading dropdowns, and fully customizable item and edit-box templates.

When to Use This Skill

  • Add a single-selection dropdown or selector to a Blazor form
  • Bind to any IEnumerable<T>, IQueryable<T>, or async collection
  • Enable live search/filter as the user types
  • Display grouped items with a group header
  • Create cascading (dependent) dropdowns
  • Show multiple columns in the drop-down list
  • Customise item rendering via ItemDisplayTemplate or EditBoxDisplayTemplate
  • Add a Clear button, custom command buttons, or placeholder text
  • Validate ComboBox selection inside a standard <EditForm>
  • Use virtual scrolling for large lists

Prerequisites & Installation

NuGet Package
PackagePurpose
DevExpress.BlazorComboBox + all standard Blazor UI components
bash
# Install from NuGet.org:
dotnet add package DevExpress.Blazor
Setup (existing project)
  1. Register DevExpress services in Program.cs:

``csharp builder.Services.AddDevExpressBlazor(); ` > **v26.1 note**: DevExpress.Blazor no longer includes options.BootstrapVersion or DevExpress.Blazor.BootstrapVersion`. Do not generate either API.

  1. Apply a theme and add client scripts in App.razor:

``razor @DxResourceManager.RegisterTheme(Themes.Fluent) @DxResourceManager.RegisterScripts() ``

  1. Add the namespace to _Imports.razor:

``razor @using DevExpress.Blazor ``

Before You Start — Ask the Developer

If the host agent has a structured question-asking tool available, use it to ask these questions one at a time with clear options — for example, Claude Code's AskUserQuestion tool or GitHub Copilot's askQuestions tool. If no such tool is available, ask the questions directly in the chat response before generating code.

Ask these questions before generating code:

  1. Render mode: Are you using InteractiveServer, InteractiveWebAssembly, or InteractiveAuto? (DxComboBox does not function in Static SSR.)
  2. Is this a new project or an existing one? New projects can use the DevExpress Template Kit; existing ones need manual setup above.
  3. Data type: Are you binding to a simple IEnumerable<string> (or primitive), a list of custom objects, an IQueryable<T>, or loading data asynchronously?
  4. Value type: Is the bound Value the same type as the data items (TData == TValue) or a different key type (e.g., int ID from a List<Product>)?
  5. Custom objects: If binding to custom objects, have you overridden Equals and GetHashCode in your model? (Required for correct item matching.)
  6. Features needed: Do you need search/filter, grouping, multiple columns, cascading, templates, or validation?

Component Overview

razor
@* Minimal example: string list *@
<DxComboBox Data="@Cities"
@bind-Value="@SelectedCity"
NullText="Select a city…"
ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" />
@code {
IEnumerable<string> Cities = new List<string> { "London", "Berlin", "Paris" };
string SelectedCity { get; set; }
}

Key generic parameters:

  • TData — the type of items in the Data collection
  • TValue — the type of the bound Value; equals TData when binding to the whole object

Documentation & Navigation Guide

TopicReference FileWhen to load
Getting Started (setup, first ComboBox)references/getting-started.mdNew project setup or first-time use
Data Binding (simple, custom objects, async, virtual scroll)references/data-binding.mdBinding to data or setting Value
Search, Filter, Grouping, Disabled Itemsreferences/data-shaping.mdConfiguring search or grouping
Multiple Columnsreferences/multiple-columns.mdMulti-column drop-down layout
Appearance Customization & Templatesreferences/appearance-and-templates.mdStyling, size modes, templates
Buttons & Cascadingreferences/buttons-and-cascading.mdClear button, custom buttons, cascading ComboBoxes
Validationreferences/validation.md<EditForm> integration

Key Properties & API Surface

DxComboBox<TData, TValue> — most-used members
Property / EventTypeDescription
DataIEnumerable<TData>Binds the drop-down list to a data source
DataAsyncFunc<CancellationToken, Task<IEnumerable<TData>>>Asynchronous data loading
Value / @bind-ValueTValueSelected value; use @bind-Value for two-way binding
ValueChangedEventCallback<TValue>Fired when the value changes
TextFieldNamestringField name to display as item text (for custom object collections)
KeyFieldNamestringField used as the item key (decouples TData from TValue)
KeyFieldNamesstring[]Multiple key fields for composite keys
GroupFieldNamestringField used to group items in the list
DisabledFieldNamestringBoolean field that marks items as disabled
NullTextstringPlaceholder displayed when value is null
ClearButtonDisplayModeDataEditorClearButtonDisplayModeControls Clear button visibility (Auto, Always, Never)
ShowDropDownButtonboolShows/hides the built-in drop-down toggle button
AllowUserInputboolAllows typing a custom value not in the list
SearchModeListSearchModeAutoSearch (default), Disabled
SearchFilterConditionListSearchFilterConditionContains, StartsWith, Equals
SearchTextParseModeListSearchTextParseModeHow multiple words are combined
SearchDelayintDebounce delay (ms) before search fires
EditFormatstringFormat string for the edit box value in multi-column mode
DropDownDirectionDropDownDirectionDown (default), Up
DropDownWidthModeDropDownWidthModeContentOrEditorWidth (default), ContentWidth, EditorWidth
SizeModeSizeModeSmall, Medium (default), Large
DataLoadModeListDataLoadModeAuto (default), OnDemand
ListRenderModeListRenderModeDefault, Virtual (virtual scrolling)
InputCssClassstringCSS class applied to the input element
InputIdstringHTML id of the input element (for label association)
ItemDisplayTemplateRenderFragment<ComboBoxItemDisplayTemplateContext<TData>>Customises drop-down item rendering
EditBoxDisplayTemplateRenderFragment<ComboBoxEditBoxDisplayTemplateContext<TData, TValue>>Customises selected-value rendering in the edit box
ColumnCellDisplayTemplateRenderFragment<ComboBoxColumnCellDisplayTemplateContext<TData>>Customises all column cells in multi-column mode
ValidateByComboBoxValidateByText or Value — which property is validated
DxListEditorColumn — for multi-column drop-down
PropertyTypeDescription
FieldNamestringData source field for this column
CaptionstringColumn header text
WidthstringColumn width (CSS value, e.g. "50px")
SearchEnabledboolInclude this column in search operations
CellDisplayTemplateRenderFragment<ListBoxColumnCellDisplayTemplateContext<TData>>Per-column cell template
Enums
EnumValues
DataEditorClearButtonDisplayModeAuto, Always, Never
ListSearchModeAutoSearch, Disabled
ListSearchFilterConditionContains, StartsWith, Equals
ListDataLoadModeAuto, OnDemand
ListRenderModeDefault, Virtual
DropDownDirectionDown, Up
DropDownWidthModeContentOrEditorWidth, ContentWidth, EditorWidth
SizeModeSmall, Medium, Large

Common Patterns

Pattern 1 — Bind to a Custom Object Collection

When TData is a custom class, set TextFieldName, and override Equals/GetHashCode in the model (or use KeyFieldName to avoid this):

razor
<DxComboBox Data="@Staff.DataSource"
TextFieldName="@nameof(Person.Text)"
@bind-Value="@SelectedPerson" />
@code {
Person SelectedPerson { get; set; } = Staff.DataSource[0];
}

Model requirement when TData == TValue:

csharp
public class Person {
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Text => $"{FirstName} {LastName}";
public override bool Equals(object obj) =>
obj is Person p && Id == p.Id;
public override int GetHashCode() => HashCode.Combine(Id);
}
Pattern 2 — Search & Filter with Group Data
razor
<DxComboBox Data="@Customers"
@bind-Value="@SelectedCustomer"
TextFieldName="@nameof(Customer.ContactName)"
GroupFieldName="@nameof(Customer.Country)"
SearchMode="ListSearchMode.AutoSearch"
SearchFilterCondition="ListSearchFilterCondition.Contains" />
Pattern 3 — Multi-Column Drop-Down
razor
<DxComboBox Data="@Staff.DataSource"
@bind-Value="@SelectedPerson"
EditFormat="{1} {2}">
<Columns>
<DxListEditorColumn FieldName="Id" Width="50px" />
<DxListEditorColumn FieldName="FirstName" Caption="Name" />
<DxListEditorColumn FieldName="LastName" Caption="Surname" />
</Columns>
</DxComboBox>

Troubleshooting

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
52
Repository forks
8
7-day trend score
20

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/devexpress/agent-skills/devexpress-blazor-combobox/badge)](https://verified-skill.com/skills/devexpress/agent-skills/devexpress-blazor-combobox)

Something wrong with this skill or its page? Tell us.