You can have either onchange or onkeyup event .
Please refer this code.
Database
Install Microsoft Northwind and Pubs Sample databases in SQL Server Management Studio
HTML
<div>
<asp:ListBox ID="lbCities" runat="server" onkeyup="SelectedIndexChanged(this.value)"
Height="150"></asp:ListBox>
<div style="display: none;">
<asp:Button ID="btnFilter" OnClick="FilterEmployees" runat="server" />
</div>
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="EmployeeId" HeaderText="EmployeeId"></asp:BoundField>
<asp:BoundField DataField="FirstName" HeaderText="Name"></asp:BoundField>
<asp:BoundField DataField="Country" HeaderText="Country"></asp:BoundField>
</Columns>
</asp:GridView>
</div>
Namespaces
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.PopulateCities();
string query = "SELECT EmployeeId, FirstName, Country FROM Employees";
this.PopulateEmployees(query, "");
}
if (this.lbCities.SelectedItem != null)
{
this.lbCities.Items.FindByText(this.lbCities.SelectedItem.Value).Selected = true;
}
}
protected void FilterEmployees(object sender, EventArgs e)
{
this.PopulateEmployees("SELECT EmployeeId, FirstName, Country FROM Employees WHERE City = @City", this.lbCities.SelectedItem.Value);
}
private void PopulateCities()
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT DISTINCT City FROM [Northwind].[dbo].Employees", conn))
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable ds = new DataTable();
da.Fill(ds);
lbCities.DataTextField = "City";
lbCities.DataValueField = "City";
lbCities.DataSource = ds;
lbCities.DataBind();
}
}
}
}
private void PopulateEmployees(string query, string cityName)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query, conn))
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
if (!string.IsNullOrEmpty(cityName))
{
cmd.Parameters.AddWithValue("@City", cityName);
}
DataTable ds = new DataTable();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
}
}
}
Screenshot