Back to Devexpress

ASPxListBox Class

aspnet-devexpress-dot-web-d4187b89.md

latest18.2 KB
Original Source

ASPxListBox Class

A list box control.

Namespace : DevExpress.Web

Assembly : DevExpress.Web.v25.2.dll

NuGet Package : DevExpress.Web

Declaration

csharp
public class ASPxListBox :
    ASPxListEdit,
    IListBoxColumnsOwner,
    IMultiSelectListEdit,
    IControlDesigner,
    IListEditPropertyDescriptorsOwner,
    IListEditServerModeOwner
vb
Public Class ASPxListBox
    Inherits ASPxListEdit
    Implements IListBoxColumnsOwner,
               IMultiSelectListEdit,
               IControlDesigner,
               IListEditPropertyDescriptorsOwner,
               IListEditServerModeOwner

Remarks

The ASPxListBox control allows you to display a list of items that users can select.

Run Demo

Create a List Box

Design Time

The ASPxListBox control is available on the DX.25.2: Common Controls toolbox tab in the Microsoft Visual Studio IDE.

Drag the control onto a form and customize the control’s settings, or paste the control’s markup in the page’s source code.

aspx
<dx:ASPxListBox ID="ASPxListBox1" runat="server">
    <Items>
        <dx:ListEditItem Text="Item 1" Value="Item 1" />
        <dx:ListEditItem Text="Item 2" Value="Item 2" />
        <dx:ListEditItem Text="Item 3" Value="Item 3" />
    </Items>
</dx:ASPxListBox>

Run Time

csharp
protected void Page_Load(object sender, EventArgs e) {
    ASPxListBox listBox = new ASPxListBox();
    listBox.ID = "ASPxListBox1";
    form1.Controls.Add(listBox);
    listBox.Items.Add(new ListEditItem("Item 1"));
    listBox.Items.Add(new ListEditItem("Item 2"));
    listBox.Items.Add(new ListEditItem("Item 3"));
}
vb
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    Dim listBox As ASPxListBox = New ASPxListBox()
    listBox.ID = "ASPxListBox1"
    form1.Controls.Add(listBox)
    listBox.Items.Add(New ListEditItem("Item 1"))
    listBox.Items.Add(New ListEditItem("Item 2"))
    listBox.Items.Add(New ListEditItem("Item 3"))
End Sub

Client-Side API

The ASPxListBox ‘s client-side API uses JavaScript and is exposed by the ASPxClientListBox object.

|

Availability

|

Set the ASPxEditBase.EnableClientSideAPI property to true or handle any client event.

| |

Client object type

|

ASPxClientListBox

| |

Access name

|

ASPxEditBase.iClientInstanceName

| |

Events

|

ASPxListBox.ClientSideEvents

|

Run Demo: Moving Items between List Boxes

Bind to Data

The editor stores its items in the ASPxListEdit.Items collection, which allows you to access an individual item and specify its features (ListEditItem).

You can use the ASPxListEdit.DataSourceID property to bind the ASPxListBox to a data source. Use the following properties to specify the editor’s item characteristics (image, text, and value):

|

Name

|

Description

| | --- | --- | |

ImageUrlField

|

Specifies the data source field that contains the image location for the editor’s items.

| |

TextField

|

Specifies the data source field that contains text to display in the editor.

| |

ValueField

|

Specifies the data source field that contains values for the editor’s items.

|

aspx
<dx:ASPxListBox ID="ASPxListBox1" runat="server" 
    DataSourceID="SqlDataSource1" ValueField="ProductName" TextField="ProductName">
</dx:ASPxListBox>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ...></asp:SqlDataSource>

Run Demo: Bind to Data

See also: Bind to Data

Item Load Modes

The ASPxListBox supports the following item load modes:

|

Load Mode

|

Description

|

Affected Properties

| | --- | --- | --- | |

Default

|

The editor loads items and executes all data operations (for instance, scrolling and filtering) on the client without a round trip to the server.

|

EnableCallbackMode=”False”

| |

On-Demand

|

You can use callbacks to load items from the server on demand. For instance, the editor can dynamically load items as a user scrolls the list.

|

EnableCallbackMode = “True”

| |

Dynamic

|

You can manually populate a list with the required items based on the filter criteria and a user’s scroll action.

|

EnableCallbackMode=”True”

|

aspx
<dx:ASPxListBox ID="ASPxListBox1" runat="server" DataSourceID="SqlDataSource1" 
    EnableCallbackMode="true" CallbackPageSize="30" >
    <Columns>
        <dx:ListBoxColumn FieldName="OrderID" />
        <!--...-->
    </Columns>
</dx:ASPxListBox>

See also: Item Load Modes

Multiple Selection

The ASPxListBox allows you to select multiple list items (SelectionMode).

SelectionMode=”Single”

SelectionMode=”Multiple”

SelectionMode=”CheckColumn”

aspx
<dx:ASPxListBox ID="ASPxListBox1" runat="server" SelectionMode="CheckColumn" ...>
    <!--...-->
</dx:ASPxListBox>

Run Demo: List Box with Multiple Selection

See also: Multi-Selection Mode

Filtering

The ASPxListBox can filter data while a user types the filter string in the filter editor.
Set the ListBoxFilteringSettings.ShowSearchUI property to true to display the search editor.

aspx
<dx:ASPxListBox ID="ASPxListBox1" runat="server" 
    DataSourceID="SqlDataSource1" ValueField="ProductName" TextField="ProductName">
    <FilteringSettings ShowSearchUI="true" />
</dx:ASPxListBox>

Run Demo: List Box Filtering

You can filter items by multiple words and columns, or use diacritic characters in the filter string.

aspx
<dx:ASPxListBox ID="ASPxListBox1" runat="server" 
    ValueField="Name" TextField="Name" DataSourceID="GermanCitiesDataSource">
    <ClientSideEvents ItemFiltering="onItemFiltering" CustomHighlighting="onCustomHighlighting" />
    <FilteringSettings ShowSearchUI="true" />
</dx:ASPxListBox>
javascript
function onItemFiltering(s, e) {
    if (!e.isFit)
        e.isFit = toLatin(e.item.text).indexOf(toLatin(e.filter)) > -1;
}

function onCustomHighlighting(s, e) {
    e.highlighting = new RegExp(toLatin(e.filter)
        .replace(/u/gi, "(u|\u00fc)")
        .replace(/a/gi, "(a|\u00e4)")
        .replace(/o/gi, "(o|\u00f6)")
    , "gi");
}

function toLatin(text) {
    return text
        .replace(/\u00fc/gi, "u")
        .replace(/\u00e4/gi, "a")
        .replace(/\u00f6/gi, "o")
        .toLowerCase();
}

Run Demo: Custom Filtering

See more: Custom Filtering

Multi-Column Mode

The ASPxListBox allows you to display data in multiple columns when the editor is in data-bound mode.

In design mode, invoke the Designer… and select the Columns… item from the smart tag menu to add/configure a column and specify the column’s field name.
Alternatively, you can use the ASPxListBox.Columns property to access the editor’s column collection and specify the ListBoxColumn.FieldName property for each column.

You can also specify the header caption, width, visibility state, and other settings for columns.

aspx
<dx:ASPxListBox ID="ASPxListBox1" runat="server" DataSourceID="SqlDataSource1">
    <Columns>
        <dx:ListBoxColumn FieldName="OrderID" />
        <!--...-->
    </Columns>
</dx:ASPxListBox>

Run Demo: Multiple Columns

See also: List Editors in Multi-Column Mode

Item Appearance Customization

The ASPxListBox allows you to customize item appearance.

You can handle the ItemTextCellPrepared and ItemRowPrepared events to specify style settings for individual cells and rows.

aspx
<style type="text/css">
    .phone {
        color: #9C0006;
        font-style: italic;
    }
    .owner {
        color: #006100;
        background-color: #C6EFCE;
        font-weight: bold;
    }
</style>
<dx:ASPxListBox ID="ASPxListBox1" runat="server" DataSourceID="CustomersDataSource" ValueField="CustomerID" 
                ValueType="System.String" OnItemTextCellPrepared="ASPxListBox1_ItemTextCellPrepared" 
                OnItemRowPrepared="ASPxListBox1_ItemRowPrepared">
    <Columns>
        <dx:ListBoxColumn FieldName="ContactName" />
        <dx:ListBoxColumn FieldName="CompanyName" />
        <dx:ListBoxColumn FieldName="Phone" />
    </Columns>
</dx:ASPxListBox>
csharp
protected void Page_Load(object sender, EventArgs e) {
    DemoHelper.Instance.ControlAreaMinHeight = Unit.Pixel(310);
}

//specify the tooltip structure
string GetItemTooltip(ListEditItem item) {
    return string.Format("Country: {0}\r\nCity: {1} \r\nAddress: {2}",
        item.GetFieldValue("Country"), item.GetFieldValue("City"), item.GetFieldValue("Address"));
}

//customize the tootltip for specific cells, specify their appearance
protected void ASPxListBox1_ItemTextCellPrepared(object sender, ListBoxItemTextCellPreparedEventArgs e) {        
    if(e.Column.FieldName == "ContactName") {
        string contactTitle = e.Item.GetFieldValue("ContactTitle").ToString();
        if(contactTitle == "Owner") {
            e.TextCell.CssClass += " owner";
            e.TextCell.ToolTip = "Owner";
        }
    }
    if(e.Column.FieldName == "Phone")
        e.TextCell.CssClass += " phone";
}

//show the tooltip
protected void ASPxListBox1_ItemRowPrepared(object sender, ListBoxItemRowPreparedEventArgs e) {
    e.Row.ToolTip = GetItemTooltip(e.Item);
}
vb
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    DemoHelper.Instance.ControlAreaMinHeight = Unit.Pixel(310)
End Sub

' specify the tooltip structure
Private Function GetItemTooltip(ByVal item As ListEditItem) As String
    Return String.Format("Country: {0}" & Constants.vbCrLf & "City: {1} " & Constants.vbCrLf & "Address: {2}", 
        item.GetFieldValue("Country"), item.GetFieldValue("City"), item.GetFieldValue("Address"))
End Function

' customize the tootltip for specific cells, specify their appearance
Protected ASPxListBox1_ItemTextCellPrepared(ByVal sender As Object, ByVal e As ListBoxItemTextCellPreparedEventArgs)
    If e.Column.FieldName = "ContactName" Then
        Dim contactTitle As String = e.Item.GetFieldValue("ContactTitle").ToString()
        If contactTitle = "Owner" Then
            e.TextCell.CssClass &= " owner"
            e.TextCell.ToolTip = "Owner"
        End If
    End If
    If e.Column.FieldName = "Phone" Then
        e.TextCell.CssClass &= " phone"
    End If
End Sub

' show the tooltip
Protected Sub ASPxListBox1_ItemRowPrepared(ByVal sender As Object, ByVal e As ListBoxItemRowPreparedEventArgs)
    e.Row.ToolTip = GetItemTooltip(e.Item)
End Sub

Run Demo: Item Appearance Customization

You can also use the ASPxListBox.ItemStyle property (ListBoxItemStyle) to define the common item style and the ASPxListBox.ItemImage property (ImageProperties) to specify common image settings.

Built-in Validation

The ASPxListBox supports the client-side and server-side validation.

The control allows you to define validation rules in the following ways:

aspx
<dx:ASPxListBox ID="ASPxListBox1" runat="server" DataSourceID="SqlDataSource1">
    <Columns>
        <dx:ListBoxColumn FieldName="OrderID" />
        <dx:ListBoxColumn FieldName="ShipName" />
        <dx:ListBoxColumn FieldName="ShipCity" />
    </Columns>
    <ValidationSettings ErrorTextPosition="Bottom" Display="Dynamic">
        <RequiredField IsRequired="True" ErrorText="Select an item!" />
    </ValidationSettings>
</dx:ASPxListBox>

Run Demo: Inplace Validation

See also: Validation

Implements

Show 15 items

IComponent

IDisposable

IParserAccessor

IDataBindingsAccessor

IControlBuilderAccessor

IControlDesignerAccessor

IExpressionsAccessor

IAttributeAccessor

IUrlResolutionService

INamingContainer

IPostBackDataHandler

IPostBackEventHandler

ICallbackEventHandler

IPropertiesOwner

IDataSourceViewSchemaAccessor

Inheritance

Show 13 items

Object Control WebControl ASPxWebControlBase ASPxWebControl ASPxDataWebControlBase ASPxDataWebControl ASPxEditBase ASPxEdit ASPxListEdit ASPxListBox BootstrapListBox

MVCxListBox

See Also

ASPxListBox Members

ASPxClientListBox

ListBoxProperties

List Editors in Multi-Column Mode

List Box

DevExpress.Web Namespace