ASP.NET has both code in the page and a code-behind. You are missing an important part to help resolve your issue - the .ASPX page. You question is not describing the symptoms - eg: my car won't start. What happens when you turn the key? I hear a noise? what noise? etc... Without details, it is anyone's guess!
Now, I am a MVC dev, not a Asp.Net WebPage dev, so it took me a few moments to adjust. So, here is my stab-in-the-dark guess: I think that you are missing a property on your DropDownList:
AutoPostBack="True"
causing the DropDownList selected event in the code-behind to not fire.
To demonstrate the DropDownList peforming as I think you want it to, here is a working example:
1. Page:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<div class="col-md-4">
<h2>DropDown Test</h2>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</asp:Content>
2. Code-behind
using System;
using System.Collections.Generic;
using System.Web.UI;
namespace WebApplication1
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitData();
}
}
public List<string> Options { get; set; }
private void InitData()
{
Options = new List<string> { "AAA", "BBB", "CCC" };
foreach (var item in Options)
{
DropDownList1.Items.Add(item);
}
DropDownList1.SelectedIndex = 0;
SetLabel();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
SetLabel();
}
private void SetLabel()
{
Label1.Text = DropDownList1.SelectedItem.Text;
}
}
}