Click here to Skip to main content
15,867,328 members
Articles / Web Development / ASP.NET

Easiest way to Create a Multiselect Dropdown in ASP.NET 4.0 using C#

Rate me:
Please Sign up or sign in to vote.
4.61/5 (28 votes)
22 Mar 2013CPOL1 min read 81.2K   3K   41   20
A multiselect dropdown in ASP.NET.

Multiselect_Dropdownlist/multi2.PNG

Introduction

In this article, I will show you how to create a multi-select control in ASP.NET. I will keep this article short and sweet so you can just use the code in your applications. Previously I referred to many codes for a multiselect dropdown but I found they were all a little complex to implement. So I decided to try it on my own. Let's see how I implemented this.

Background

First, you must install AJAX controls in Visual Studio. I am using VS2010. This is because I am using the popup control extender to implement this control.

Using the code

Place a textbox in Design view and assign the popup extender for that textbox. An important thing to note here is you must place your textbox control within the UpdatePanel.

Afterwards, you create a panel and within this panel, you put a checkboxlist. You then assign this panel to the PopupControlID property of the popup extender.

Now take a look at this code:

ASP.NET
<%@ Page Language="C#" AutoEventWireup="true" 
   CodeFile="multidropdown.aspx.cs" Inherits="_Default" %>

<%@ Register Assembly="AjaxControlToolkit" 
  Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ToolkitScriptManager runat="server">
        </asp:ToolkitScriptManager>

        <asp:UpdatePanel ID="updatepanel1" runat="server">

            <ContentTemplate>

                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

                <asp:PopupControlExtender 
                    ID="TextBox1_PopupControlExtender" runat="server"
                    Enabled="True" ExtenderControlID="" 
                    TargetControlID="TextBox1" 
                    PopupControlID="Panel1" OffsetY="22">
                </asp:PopupControlExtender>

                <asp:Panel ID="Panel1" runat="server" 
                     Height="116px" Width="145px" 
                     BorderStyle="Solid" BorderWidth="2px" 
                     Direction="LeftToRight"
                     ScrollBars="Auto" BackColor="#CCCCCC" 
                     Style="display: none">
                   
                    <asp:CheckBoxList ID="CheckBoxList1" runat="server" 
                          DataSourceID="SqlDataSource1" DataTextField="holiday_name"
                         DataValueField="holiday_name" AutoPostBack="True"
                        OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged">
                    </asp:CheckBoxList>

                    <asp:SqlDataSource ID="SqlDataSource1" 
                          runat="server" ConnectionString="<%$ 
                          ConnectionStrings:employeedbConnectionString %>"
                        SelectCommand="SELECT [holiday_name] FROM [tblholidaymas]"> 
                     </asp:SqlDataSource>
                </asp:Panel>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>

Here, you select the datasource from your SQL Server database.

Multiselect_Dropdownlist/multi1.PNG

Finally, we need to do one more modification in the code-behind. Each time we click the checkboxlist, the selected value will be added to the textbox control. So in the selected index changed event, you will place this code:

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    
    }
  
    protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string name = "";
        for (int i = 0; i < CheckBoxList1.Items.Count; i++)
        {
            if (CheckBoxList1.Items[i].Selected)
            {
                name += CheckBoxList1.Items[i].Text + ",";
            }
        }
        TextBox1.Text = name;
    }
}

That's all.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Junior) CS1401
India India


Any fool can write code that a computer can understand. Good programmers write code that humans can understand.


Comments and Discussions

 
Questionhow do you load existing items as comma separated strings from a database Pin
Member 99592122-Apr-13 0:12
Member 99592122-Apr-13 0:12 
AnswerRe: how do you load existing items as comma separated strings from a database Pin
CS14017-Apr-13 0:23
CS14017-Apr-13 0:23 
GeneralMy vote of 5 Pin
BH TAN23-Mar-13 17:31
professionalBH TAN23-Mar-13 17:31 
GeneralCheck all Pin
elaya_627-Jun-12 5:36
elaya_627-Jun-12 5:36 
GeneralRe: Check all Pin
CS14011-Jul-12 3:27
CS14011-Jul-12 3:27 
GeneralMy vote of 5 Pin
Gariel Martini9-Feb-12 5:30
Gariel Martini9-Feb-12 5:30 
GeneralRe: My vote of 5 Pin
CS140117-Feb-12 19:10
CS140117-Feb-12 19:10 
GeneralMy vote of 3 Pin
Marcelo Ricardo de Oliveira10-Oct-11 0:06
mvaMarcelo Ricardo de Oliveira10-Oct-11 0:06 
GeneralRe: My vote of 3 Pin
CS140110-Oct-11 18:34
CS140110-Oct-11 18:34 
GeneralMy vote of 5 Pin
Anurag Gandhi7-Oct-11 1:14
professionalAnurag Gandhi7-Oct-11 1:14 
GeneralMy vote of 5 Pin
C133722-Sep-11 23:45
C133722-Sep-11 23:45 
GeneralRe: My vote of 5 Pin
CS140123-Sep-11 0:37
CS140123-Sep-11 0:37 
QuestionBeware SQL Injection Pin
Stephen Inglish14-Sep-11 1:51
Stephen Inglish14-Sep-11 1:51 
AnswerRe: Beware SQL Injection Pin
CS140114-Sep-11 2:40
CS140114-Sep-11 2:40 
GeneralRe: Beware SQL Injection Pin
fjdiewornncalwe14-Sep-11 3:11
professionalfjdiewornncalwe14-Sep-11 3:11 
GeneralRe: Beware SQL Injection Pin
CS140114-Sep-11 3:21
CS140114-Sep-11 3:21 
GeneralMy vote of 5 Pin
karthi.mkr13-Sep-11 20:02
karthi.mkr13-Sep-11 20:02 
GeneralRe: My vote of 5 Pin
CS140113-Sep-11 20:25
CS140113-Sep-11 20:25 
GeneralMy vote of 5 Pin
Professional manpreet13-Sep-11 8:41
Professional manpreet13-Sep-11 8:41 
GeneralRe: My vote of 5 Pin
CS140113-Sep-11 18:40
CS140113-Sep-11 18:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.