ASP.NET FAQ - ListBox

How can you use a ListBox control to display items with Price above a specific value in one color and the ones below that value in a different color

The ListBox Web server control prevents us from assigning the style property to each item in the ListBox. This bug is confirmed by Microsoft Knowledge Base Article – 309338

So, instead use a HTML ListBox with runat=server

<SELECT id='listbox1' size='14' runat='server' >
</SELECT>

VB.NET

Dim myconnection As SqlConnection
Dim myda As SqlDataAdapter
Dim ds As DataSet
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
	myconnection = New SqlConnection('Server=localhost;uid=sa;password=;database=northwind;')
	myda = New SqlDataAdapter('Select * from Products ', myconnection)
	ds = New DataSet()
	myda.Fill(ds, 'AllTables')
	dim i as Integer
	For i = 0 To ds.Tables(0).Rows.Count - 1
		listBox1.Items.Add(New ListItem(ds.Tables(0).Rows(i)('UnitPrice'), ds.Tables(0).Rows(i)('ProductID')))
		If ds.Tables(0).Rows(i)('UnitPrice') <= 25 Then
			listBox1.Items(i).Attributes.Add('style', 'color:red')
		Else
			listBox1.Items(i).Attributes.Add('style', 'color:green')
		End If
	Next
End Sub

C#

SqlConnection mycn;
SqlDataAdapter myda;
DataSet ds;
String strConn;
private void Page_Load(object sender, System.EventArgs e)
{
	if (!IsPostBack)
	{
		strConn='Data Source=localhost;uid=sa;pwd=;Initial Catalog=northwind';
		mycn = new SqlConnection(strConn);
		myda = new SqlDataAdapter ('Select * FROM Products ', mycn);
		ds = new DataSet();
		myda.Fill (ds,'Table');
				
		for(int i = 0 ;i < ds.Tables[0].Rows.Count - 1;i++)
		{
			listBox1.Items.Add (new ListItem(ds.Tables[0].Rows[i]['UnitPrice'].ToString(),
			ds.Tables[0].Rows[i]['ProductID'].ToString()));
			if(Convert.ToDouble(ds.Tables[0].Rows[i]['UnitPrice'].ToString()) <= 25 )
			{
				listBox1.Items[i].Attributes.Add('style', 'color:red');
			}
			else
			{
				listBox1.Items[i].Attributes.Add('style', 'color:green');
			}
		}
	}
}
Permalink
How to check if an item already exists in a listbox

VB.NET

Dim lstitem As ListItem = ListBox1.Items.FindByValue('<valuecheckedfor>')
If Not lstitem Is Nothing Then
       Response.Write('Item Exists')
Else
       Response.Write('Item Does not exist')
End If

C#

ListItem lstitem    = ListBox1.Items.FindByValue('<valuecheckedfor>');
if (  lstitem !=null)
{
	Response.Write ('Does  exist');
}
else
{
	Response.Write ('Does not exist');
}

You can also use FindByText instead of FindByValue.

Permalink
How to make the listbox scroll down to show it’s last entry when the page loads?
<p>
<asp:ListBox id='ListBox1' runat='server'></asp:ListBox>
</p>
<p>
<asp:Button id='buttonAdd'  runat='server' Text='Add'></asp:Button>
</p>

In button Click Event

VB.NET

ListBox1.Items.Add(DateTime.Now.ToString('MMM dd, yyyy') + ' ' + DateTime.Now.ToString('t'))
Dim scrollScript As String
scrollScript &= '<script language=’javascript’>'
scrollScript &= 'document.forms[0].ListBox1.selectedIndex ' & _
          ' = document.forms[0].ListBox1.options.length-1;'
scrollScript &= '<' & '/' & 'script>'
Page.RegisterStartupScript('', scrollScript)

C#

ListBox1.Items.Add(DateTime.Now.ToString('MMM dd, yyyy') + ' ' + DateTime.Now.ToString('t'));
string scrollScript='' ;
scrollScript += '<script language=’javascript’>';
scrollScript += 'document.forms[0].ListBox1.selectedIndex  = document.forms[0].ListBox1.options.length-1;';
scrollScript += '<' + '/' + 'script>';
Page.RegisterStartupScript('', scrollScript);
Permalink
How to select a specific Item in a ListBox in code

VB.NET

ListBox1.Items.FindByValue(<Value>).Selected = true
’ListBox1.Items.FindByText(<Text>).Selected = true

C#

ListBox1.Items.FindByValue(<Value>).Selected = true;
//ListBox1.Items.FindByText(<Text>).Selected = true;
Permalink
How to select all the Items from a listbox when the user selects a radio button
<asp:listbox id='ListBox1' runat='server' selectionmode='Multiple'>
	<asp:listitem value='Red'>Red</asp:listitem>
	<asp:listitem value='Blue'>Blue</asp:listitem>
	<asp:listitem value='Green'>Green</asp:listitem>
	<asp:listitem value='White'>White</asp:listitem>
</asp:listbox>
<asp:radiobutton id='RadioButton1' runat='server' groupname='selrb' text='Select All' autopostback='True'></asp:radiobutton>

VB.NET

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
	        Dim lstItem As ListItem
	        For Each lstItem In ListBox1.Items
		            lstItem.Selected = True
	        Next
    End Sub

C#

foreach (ListItem lstItem in ListBox1.Items)
{
	lstItem.Selected = true; 
}
Permalink
How to add items dynamically to a ListBox using an ArrayList
<asp:ListBox id='ListBox1' runat='server' AutoPostBack='True'></asp:ListBox>

VB.NET

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
	’Put user code to initialize the page here
	If Not IsPostBack Then
		Dim arrList As New ArrayList
		arrList.Add('One')
		arrList.Add('Two')
		arrList.Add('Three')
		arrList.Add('Four')
		ListBox1.DataSource = arrList
		ListBox1.DataBind()
	End If
End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
	Response.Write(ListBox1.SelectedItem.Text)
End Sub

C#

private void Page_Load(object sender, System.EventArgs e)
{
	// Put user code to initialize the page here
	if (!Page.IsPostBack )
	{
		ArrayList arrList = new ArrayList();
		arrList.Add('One');
		arrList.Add('Two');
		arrList.Add('Three');
		arrList.Add('Four');
		ListBox1.DataSource = arrList;
		ListBox1.DataBind();
	}
}

private void ListBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
	Response.Write (ListBox1.SelectedItem.Text   );
}
Permalink
How to move items between ListBoxes
<asp:ListBox id='ListBox1' runat='server'>
	<asp:ListItem Value='Faqs'>Faqs</asp:ListItem>
	<asp:ListItem Value='Tips'>Tips</asp:ListItem>
	<asp:ListItem Value='Tricks'>Tricks</asp:ListItem>
	<asp:ListItem Value='Advanced'>Advanced</asp:ListItem>
</asp:ListBox>
<asp:Button id='btnToRight' style='Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 24px'
	runat='server' Text='>'></asp:Button>
<asp:ListBox id='ListBox2' style='Z-INDEX: 102; LEFT: 152px; POSITION: absolute; TOP: 16px' runat='server'></asp:ListBox>
<asp:RequiredFieldValidator id='RequiredFieldValidator1' style='Z-INDEX: 103; LEFT: 24px; POSITION: absolute; TOP: 120px'
	runat='server' ErrorMessage='Please Select Item' ControlToValidate='ListBox1'></asp:RequiredFieldValidator>

VB.NET

Private Sub btnToRight_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToRight.Click
	If ListBox1.Items.Count = 0 Then
		Response.Write('No item to move')
	End If
	Dim itemremoved As String = ListBox1.SelectedItem.Text
	ListBox1.Items.Remove(itemremoved)
	ListBox2.Items.Add(itemremoved)
End Sub

C#

private void btnToRight_Click(object sender, System.EventArgs e)
{
	if (ListBox1.Items.Count == 0 ) 
	{
		Response.Write('No item to move');
	}
string itemremoved    = ListBox1.SelectedItem.Text;
ListBox1.Items.Remove(itemremoved);
ListBox2.Items.Add(itemremoved);
}
Permalink
How to use a single DataReader associated with two different tables to databind two different listbox controls

VB.NET

Dim cn As SqlConnection
Dim cmd As SqlCommand
Dim dr As SqlDataReader
cn = New SqlConnection('Server=localhost;uid=sa;database=northwind;pwd=')
cmd = New SqlCommand('select * from products;select * from categories', cn)
cn.Open()
dr = cmd.ExecuteReader()
ListBox1.DataSource = dr
ListBox1.DataTextField = 'productname'
ListBox1.DataBind()
dr.NextResult()
ListBox2.DataSource = dr
ListBox2.DataTextField = 'categoryname'
ListBox2.DataBind()

C#

SqlConnection cn;
SqlCommand cmd;
SqlDataReader dr;
cn = new SqlConnection('Server=localhost;uid=sa;database=northwind;pwd=');
cmd= new SqlCommand ('select * from products;select * from categories', cn);
cn.Open();
dr = cmd.ExecuteReader();
ListBox1.DataSource = dr; 
ListBox1.DataTextField = 'productname'; 
ListBox1.DataBind(); 
dr.NextResult();
ListBox2.DataSource = dr; 
ListBox2.DataTextField = 'categoryname'; 
ListBox2.DataBind();
Permalink
How to populate a listbox with the Column Names in a Table

VB.NET

’Populate the dataset
Dim dc As DataColumn
For Each dc In ds.Tables(0).Columns
	ListBox1.Items.Add(dc.ColumnName)
Next

C#

//Populate the Dataset
foreach (DataColumn dc in ds.Tables[0].Columns)
{
	ListBox1.Items.Add(dc.ColumnName);
}
Permalink
How to clear all the items in a listbox

VB.NET

ListBox1.Items.Clear

C#

ListBox1.Items.Clear();
Permalink