ASP.NET Tutorial/ASP.net Controls/ListBox

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

asp:ListBox OnSelectedIndexChanged event and AutoPostBack (VB.net)

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Drawing" %>
<script runat="server">
   sub NameHandler(Sender as Object, e as EventArgs)
      lblMessage.Text = tbName.Text & ", select a color: "
   end sub   
   sub ListHandler(Sender as Object, e as EventArgs)
      lbColor.BackColor = Color.FromName(Sender.SelectedItem.Text)
   end sub
</script>
<html><body>
   <form runat="server">
      <asp:Textbox id="tbName" runat="server"
         OnTextChanged="NameHandler"
         AutoPostBack="true" />
      
      <asp:Label id="lblMessage" runat="server"
         Text="Select a color: " />
      <asp:Listbox id="lbColor" runat="server"
         OnSelectedIndexChanged="ListHandler"
         AutoPostBack="true" >
         <asp:Listitem>Red</asp:Listitem>
         <asp:Listitem>blue</asp:Listitem>
         <asp:Listitem>green</asp:Listitem>
         <asp:Listitem>white</asp:Listitem>
      </asp:Listbox>
   </form>
</body></html>


Bind array data to asp:ListBox (VB.net)

<script runat="server">
   dim strName as String = "A"
   dim myArray() as String = {"Hello", "World"}
   dim myString as String = "AA"
   sub Page_Load(Sender as Object, e as EventArgs)
      Page.DataBind()
   end sub
</script>
<html>
   <form runat="server">
   My Name is <%# strName %>
   <asp:Listbox datasource="<%# myArray %>" runat="server" />
  
   <asp:Textbox text="<%# myString.ToString %>" runat="server" />
   </form>
</html>


Bind asp:Label with asp:ListBox (VB.net)

<script language="VB" runat="server">
   sub Index_Changed(Sender as Object, e as EventArgs)
      DataBind()
   end sub
</script>
<html><body>
   <form runat="server">
      <asp:Listbox runat="server" id="lbColors"
         AutoPostBack=true
         rows="1"
         SelectionMode="Single"
         OnSelectedIndexChanged="Index_Changed" >
         <asp:Listitem value="1">Red</asp:Listitem>
         <asp:Listitem value=" 2">Blue</asp:Listitem>
         <asp:Listitem value=" 3">Green</asp:Listitem>
         <asp:Listitem value=" 4">Yellow</asp:Listitem>
      </asp:Listbox>
      <asp:Label id="lblMessage" runat="server"
         Text="<%# lbColors.selectedItem.Text %>" />
   </form>
</body></html>


Fill value to asp:ListBox in asp:RadioButtonList selection changed action (VB.net)

<%@ Page Language="VB" %>
<script runat="server">
   sub ChangeNames(Sender as Object, e as EventArgs)
      if rlSex.SelectedIndex = 0 then
         "female
         lbNames.Items(0).Text = "A"
         lbNames.Items(1).Text = "B"
         lbNames.Items(2).Text = "C"
         lbNames.Items(3).Text = "D"
      else
         "male
         lbNames.Items(0).Text = "E"
         lbNames.Items(1).Text = "F"
         lbNames.Items(2).Text = "G"
         lbNames.Items(3).Text = "H"
      end if
   end sub
   
   sub DisplayMessage(Sender as Object, e as EventArgs)
      lblMessage.Text = Sender.SelectedItem.Text & _
         " is a wonderful name!"
   end sub
</script>
<html><body>
   <form runat="server">
      <asp:Label id="lblMessage" runat="server"/>
      
      Choose the sex of your baby:
      <asp:RadioButtonList id="rlSex" runat="server"
         OnSelectedIndexChanged="ChangeNames"
         AutoPostBack="true" >
         <asp:ListItem>Female</asp:ListItem>
         <asp:ListItem>Male</asp:ListItem>
      </asp:RadioButtonList>
      
      Possible names:<br>
      <asp:ListBox id="lbNames" runat="server"
         OnSelectedIndexChanged="DisplayMessage"
         AutoPostBack="true" >
         <asp:ListItem></asp:ListItem>
         <asp:ListItem></asp:ListItem>
         <asp:ListItem></asp:ListItem>
         <asp:ListItem></asp:ListItem>
      </asp:ListBox>
   
   </form>
</body></html>


Property tester

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="PropertyTester" %>
<!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>Server Control Property Tester</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <h1>Server Control Property Tester</h1>
    <asp:Panel ID="panChange" runat="server" 
         GroupingText="Controls that will change">
      <asp:Label id="labHere" runat="server">Here is a label</asp:Label>
      <asp:TextBox id="txtBox" runat="server">Sample Text</asp:TextBox>
      <asp:Label id="labAnother" runat="server">This is yet another label</asp:Label>
      <asp:Button id="btnSample" runat="server" Text="Sample Button"></asp:Button>
      </asp:Panel>
     <asp:Panel ID="panProperties" runat="server" 
           GroupingText="When you choose these display properties">
       <br/><asp:CheckBox id="chkVisible" runat="server" Text="Visible" AutoPostBack="True" Checked="True" OnCheckedChanged="chkVisible_CheckedChanged"></asp:CheckBox>
       <br/><asp:CheckBox id="chkEnabled" runat="server" Text="Enabled" AutoPostBack="True" Checked="True" OnCheckedChanged="chkEnabled_CheckedChanged"></asp:CheckBox>
       <br/>Text Color:
       <asp:DropDownList id="drpTextColor" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drpTextColor_SelectedIndexChanged">
         <asp:ListItem Value="0" Selected="True">Choose a color</asp:ListItem>
         <asp:ListItem Value="Black">Black</asp:ListItem>
         <asp:ListItem Value="Blue">Blue</asp:ListItem>
         <asp:ListItem Value="CadetBlue">Cadet Blue</asp:ListItem>
         <asp:ListItem Value="Firebrick">Firebrick</asp:ListItem>
         <asp:ListItem Value="Gainsboro">Gainsboro</asp:ListItem>
         <asp:ListItem Value="Green">Green</asp:ListItem>
         <asp:ListItem Value="Gold">Gold</asp:ListItem>
         <asp:ListItem Value="LimeGreen">Lime Green</asp:ListItem>
         <asp:ListItem Value="Red">Red</asp:ListItem>
         <asp:ListItem Value="SaddleBrown">Saddle Brown</asp:ListItem>
         <asp:ListItem Value="Violet">Violet</asp:ListItem>
         <asp:ListItem Value="Yellow">Yellow</asp:ListItem>
       </asp:DropDownList>
       <br/>Background Color:
      <asp:DropDownList id="drpBackgroundColor" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drpBackgroundColor_SelectedIndexChanged">
        <asp:ListItem Value="0" Selected="True">Choose a color</asp:ListItem>
        <asp:ListItem Value="Black">Black</asp:ListItem>
        <asp:ListItem Value="Blue">Blue</asp:ListItem>
        <asp:ListItem Value="CadetBlue">Cadet Blue</asp:ListItem>
        <asp:ListItem Value="Firebrick">Firebrick</asp:ListItem>
        <asp:ListItem Value="Gainsboro">Gainsboro</asp:ListItem>
        <asp:ListItem Value="Green">Green</asp:ListItem>
        <asp:ListItem Value="Gold">Gold</asp:ListItem>
        <asp:ListItem Value="LimeGreen">Lime Green</asp:ListItem>
        <asp:ListItem Value="Red">Red</asp:ListItem>
        <asp:ListItem Value="SaddleBrown">Saddle Brown</asp:ListItem>
        <asp:ListItem Value="Violet">Violet</asp:ListItem>
        <asp:ListItem Value="Yellow">Yellow</asp:ListItem>
      </asp:DropDownList>
       <br/>Font:
      <asp:DropDownList id="drpFont" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drpFont_SelectedIndexChanged">
        <asp:ListItem Value="Choose a font">Choose a font</asp:ListItem>
        <asp:ListItem Value="Arial">Arial</asp:ListItem>
        <asp:ListItem Value="Times New Roman">Times New Roman</asp:ListItem>
        <asp:ListItem Value="Tahoma">Tahoma</asp:ListItem>
      </asp:DropDownList>
       <br/>Font Size:
      <asp:DropDownList id="drpFontSize" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drpFontSize_SelectedIndexChanged">
        <asp:ListItem Value="Choose a font size" Selected="True">Choose a font size</asp:ListItem>
        <asp:ListItem Value="10">10pt</asp:ListItem>
        <asp:ListItem Value="14">14pt</asp:ListItem>
        <asp:ListItem Value="16">16pt</asp:ListItem>
      </asp:DropDownList>
       <br/>Border Style:
      <asp:DropDownList id="drpBorderStyle" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drpBorderStyle_SelectedIndexChanged">
        <asp:ListItem Value="Choose a border style" Selected="True">Choose a border style</asp:ListItem>
        <asp:ListItem Value="dashed">dashed</asp:ListItem>
        <asp:ListItem Value="inset">inset</asp:ListItem>
        <asp:ListItem Value="none">none</asp:ListItem>
        <asp:ListItem Value="outset">outset</asp:ListItem>
        <asp:ListItem Value="solid">solid</asp:ListItem>
      </asp:DropDownList>
       <br/>Border Width:
      <asp:DropDownList id="drpBorderWidth" runat="server" AutoPostBack="True" OnSelectedIndexChanged="drpBorderWidth_SelectedIndexChanged">
        <asp:ListItem Value="Select a border width" Selected="True">Select a border width</asp:ListItem>
        <asp:ListItem Value="1">1 px</asp:ListItem>
        <asp:ListItem Value="2">2 px</asp:ListItem>
        <asp:ListItem Value="3">3 px</asp:ListItem>
      </asp:DropDownList>
    </asp:Panel>  
    </div>
    </form>
</body>
</html>
File: Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
public partial class PropertyTester : System.Web.UI.Page
{
   private Style _styleToApply = new Style();
   protected void chkVisible_CheckedChanged(object sender, EventArgs e)
   {
      if (chkVisible.Checked)
         ChangeVisible(true);
      else
         ChangeVisible(false);
   }
   protected void chkEnabled_CheckedChanged(object sender, EventArgs e)
   {
      if (chkEnabled.Checked)
         ChangeEnabled(true);
      else
         ChangeEnabled(false);
   }
   protected void drpTextColor_SelectedIndexChanged(object sender, EventArgs e)
   {
      if (drpTextColor.SelectedIndex > 0)
      {
         _styleToApply.ForeColor = Color.FromName(drpTextColor.SelectedValue);
         ApplyNewStyle(_styleToApply);
      }
   }
   protected void drpBackgroundColor_SelectedIndexChanged(object sender, EventArgs e)
   {
      if (drpBackgroundColor.SelectedIndex > 0)
      {
         _styleToApply.BackColor = Color.FromName(drpBackgroundColor.SelectedValue);
         ApplyNewStyle(_styleToApply);
      } 
   }
   protected void drpFont_SelectedIndexChanged(object sender, EventArgs e)
   {
      if (drpFont.SelectedIndex > 0)
      {
         _styleToApply.Font.Name = drpFont.SelectedValue; 
         ApplyNewStyle(_styleToApply);
      }
   }
   protected void drpFontSize_SelectedIndexChanged(object sender, EventArgs e)
   {
      if (drpFontSize.SelectedIndex > 0)
      {
         int fontSize = Convert.ToInt32(drpFontSize.SelectedValue);
         _styleToApply.Font.Size = FontUnit.Point(fontSize);
         ApplyNewStyle(_styleToApply);
      } 
   }
   protected void drpBorderStyle_SelectedIndexChanged(object sender, EventArgs e)
   {
      if (drpBorderStyle.SelectedIndex > 0)
      {
         string currBorderStyle = drpBorderStyle.SelectedValue;
         if (currBorderStyle == "dashed")
            _styleToApply.BorderStyle = BorderStyle.Dashed;
         else if (currBorderStyle == "inset")
            _styleToApply.BorderStyle = BorderStyle.Inset;
         else if (currBorderStyle == "none")
            _styleToApply.BorderStyle = BorderStyle.None;
         else if (currBorderStyle == "outset")
            _styleToApply.BorderStyle = BorderStyle.Outset;
         else if (currBorderStyle == "solid")
            _styleToApply.BorderStyle = BorderStyle.Solid;
         ApplyNewStyle(_styleToApply);
      } 
   }
   protected void drpBorderWidth_SelectedIndexChanged(object sender, EventArgs e)
   {
      if (drpBorderWidth.SelectedIndex > 0)
     {
       int borderSize = Convert.ToInt32(drpBorderWidth.SelectedValue);
       _styleToApply.BorderWidth = Unit.Pixel(borderSize);
       ApplyNewStyle(_styleToApply);
     } 
   }
   private void ApplyNewStyle(Style styleToSet)
   {
      labHere.ApplyStyle(styleToSet);
      labAnother.ApplyStyle(styleToSet);
      txtBox.ApplyStyle(styleToSet);
      btnSample.ApplyStyle(styleToSet);
   }
   private void ChangeVisible(bool which)
   {
      labHere.Visible = which;
      labAnother.Visible = which;
      txtBox.Visible = which;
      btnSample.Visible = which;
   }
   private void ChangeEnabled(bool which)
   {
      labHere.Enabled = which;
      labAnother.Enabled = which;
      txtBox.Enabled = which;
      btnSample.Enabled = which;
   }  
}


Selection mode of asp:ListBox (C#)

<%@ Page Language="c#" Explicit="true" Strict="true" %>
<script language="c#" runat="Server">
    public void Verify(object sender, EventArgs e)
    {
      if (CountryListBox.SelectedIndex != -1)
      {
        OutputLabel.Text = "You selected: ";
        if (CountryListBox.SelectionMode == ListSelectionMode.Single)
          OutputLabel.Text += "<b>" + CountryListBox.SelectedItem.Text + "</b>";
        else
        {
          for (int j=0;j<CountryListBox.Items.Count;j++)
          {
            if (CountryListBox.Items[j].Selected)
              OutputLabel.Text += "<b>" + CountryListBox.Items[j].Text + "</b>, ";
          }
        }
      }
      else
        OutputLabel.Text = "You didn"t selected any country!";
    }
</script>
<html>
  <head>
    <title></title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
      <asp:ListBox ID="CountryListBox" Runat="server" SelectionMode="Multiple">
        <asp:ListItem Value="1">United States</asp:ListItem>
        <asp:ListItem Value="2">United Kingdom</asp:ListItem>
        <asp:ListItem Value="3">China</asp:ListItem>
        <asp:ListItem Value="4">India</asp:ListItem>
      </asp:ListBox><br>
      <asp:Button ID="SubmitButton" Runat="server" Text="Submit" OnClick="Verify"></asp:Button>
      <asp:Label ID="OutputLabel" Runat="server"></asp:Label>
    </form>
  </body>
</html>


Selection mode of asp:ListBox (VB)

<%@ Page Language="vb" Explicit="true" Strict="true" %>
<script language="vb" runat="Server">
    Public Sub Verify(sender As Object, e As EventArgs)
        Dim lstItem As ListItem
        If CountryListBox.SelectedIndex <> -1 Then
            OutputLabel.Text = "You selected: "
            If CountryListBox.SelectionMode = ListSelectionMode.Single Then
                OutputLabel.Text += "<b>" & CountryListBox.SelectedItem.Text & "</b>"
            Else
                For Each lstItem In CountryListBox.Items
                    If lstItem.Selected Then
                        OutputLabel.Text += "<b>" & lstItem.Text & "</b>, "
                    End If
                Next
            End If
        Else
            OutputLabel.Text = "You didn"t selected any country!"
        End If
    End Sub
</script>
<html>
  <head>
    <title></title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
      <asp:ListBox ID="CountryListBox" Runat="server" SelectionMode="Multiple">
        <asp:ListItem Value="1">United States</asp:ListItem>
        <asp:ListItem Value="2">United Kingdom</asp:ListItem>
        <asp:ListItem Value="3">China</asp:ListItem>
        <asp:ListItem Value="4">India</asp:ListItem>
      </asp:ListBox><br>
      <asp:Button ID="SubmitButton" Runat="server" Text="Submit" OnClick="Verify"></asp:Button>
      <asp:Label ID="OutputLabel" Runat="server"></asp:Label>
    </form>
  </body>
</html>


Set array value to asp:ListBox DataSource (VB.net)

<script runat="server">
   sub Page_Load(Sender as Object, e as EventArgs)
      if not Page.IsPostBack then
         dim arrColors() as string = {"red", "orange", "yellow", "green", "blue", "indigo", "violet"}
         lbColors.SelectedIndex = 0
         lbColors.DataSource = arrColors
      end if
      DataBind()
   end sub
</script>
<html><body>
   <form runat="server">
      <asp:Listbox runat="server" id="lbColors"
         width="150"
         AutoPostBack="true"
         SelectionMode="Single" >
      </asp:Listbox>
   
      <asp:Label id="lblMessage" runat="server"
         Text="<%# lbColors.SelectedItem.Text %>" />
   </form>
</body></html>


Using the ListBox control (C#)

<%@ Page Language="C#" %>
<script runat="server">
    protected void Button1_Click(object sender, EventArgs e)
    {
       ListBox1.Items.Add(TextBox1.Text.ToString());
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
       Label1.Text = "You selected from the ListBox:<br>";
       foreach (ListItem li in ListBox1.Items) {
           if (li.Selected == true) {
               Label1.Text += li.Text + "<br>";
           }
       }   
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Using the ListBox</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
        <asp:Button ID="Button1" Runat="server" Text="Add an additional item" 
         OnClick="Button1_Click" />
        <br />
        <br />
    
        <asp:ListBox ID="ListBox1" Runat="server" SelectionMode="multiple">
           <asp:ListItem>Hematite</asp:ListItem>
           <asp:ListItem>Halite</asp:ListItem>
           <asp:ListItem>Limonite</asp:ListItem>
           <asp:ListItem>Magnetite</asp:ListItem>
        </asp:ListBox>
        <br />
        <br />
        <asp:Button ID="Button2" Runat="server" Text="Submit" 
         OnClick="Button2_Click" />
        <br />
        <br />
        <asp:Label ID="Label1" Runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>


Using the ListBox control (VB)

<%@ Page Language="VB" %>
<script runat="server">
    Protected Sub Button1_Click(ByVal sender As Object, _
       ByVal e As System.EventArgs)
        ListBox1.Items.Add(TextBox1.Text.ToString())
    End Sub
    Protected Sub Button2_Click(ByVal sender As Object, _
       ByVal e As System.EventArgs)
        Label1.Text = "You selected from the ListBox:<br>"
        For Each li As ListItem In ListBox1.Items
            If li.Selected = True Then
                label1.Text += li.Text & "<br>"
            End If
        Next
    End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Using the ListBox</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>
        <asp:Button ID="Button1" Runat="server" Text="Add an additional item" 
         OnClick="Button1_Click" />
        <br />
        <br />
    
        <asp:ListBox ID="ListBox1" Runat="server" SelectionMode="multiple">
           <asp:ListItem>Hematite</asp:ListItem>
           <asp:ListItem>Halite</asp:ListItem>
           <asp:ListItem>Limonite</asp:ListItem>
           <asp:ListItem>Magnetite</asp:ListItem>
        </asp:ListBox>
        <br />
        <br />
        <asp:Button ID="Button2" Runat="server" Text="Submit" 
         OnClick="Button2_Click" />
        <br />
        <br />
        <asp:Label ID="Label1" Runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>