Vincent Maverick Durano
То, что вам нужно, называется "каскадный выпадающий список". Вот несколько статей, которые я нашел в сети:
ASP.NET веб-формы: Создание каскадных выпадающих списков в ASP.Net
ASP.NET с помощью jQuery : Каскадные выпадающие списки с помощью jQuery и ASP.NET
ASP.NET с AJAXControlToolkit: Пример каскадного выпадающего списка AJAX с использованием базы данных ASP.Net
ASP.NET MVC: Создание каскадного выпадающего списка в MVC с использованием Entity Framework и ADO.NET
Основываясь на приведенных выше ссылках, существует множество способов реализации каскадного выпадающего списка. В контексте ASP.NET WebForms
, вы могли бы либо использовать jQuery
/JavaScript
AJAX
, используйте CascadingDropDown
управление от AJAXControlToolkit
или вручную сделать это на сервере. Вот быстрая реализация на стороне сервера с использованием ADO.NET путь:
private string GetConnectionString()
{
//calling up the connection string that was set up from the web config file
return System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
}
private void BindDropDownList1()
{
DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection(GetConnectionString());
try
{
connection.Open();
string sqlStatement = "SELECT ColumnName * FROM TableName";
SqlCommand sqlCmd = new SqlCommand(sqlStatement, connection);
SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
sqlDa.Fill(dt);
if (dt.Rows.Count > 0)
{
DropDownList1.DataSource =dt;
DropDownList1.DataTextField = "ColumnName"; // the items to be displayed in the list items
DropDownList1.DataValueField = "ColumnName"; // the id of the items displayed
DropDownList1.DataBind();
}
}
finally
{
connection.Close();
}
}
private void BindDropDownList2(string field)
{
DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection(GetConnectionString());
try
{
connection.Open();
string sqlStatement = "SELECT * FROM Table WHERE ColumnName = @Value1";
SqlCommand sqlCmd = new SqlCommand(sqlStatement, connection);
sqlCmd .Parameters.AddWithValue("@Value1", field)
SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
sqlDa.Fill(dt);
if (dt.Rows.Count > 0)
{
DropDownList2.DataSource =dt;
DropDownList2.DataTextField = "ColumnName"; // the items to be displayed in the list items
DropDownList2.DataValueField = "ColumnName"; // the id of the items displayed
DropDownList2.DataBind();
}
}
finally
{
connection.Close();
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindDropDownList1();
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
BindDropDownList2(DropDownList1.SelectedItem.Text);
}
Идея состоит в том, чтобы передать выбранное значение элемента, когда выбор производится из
dropdownlist
и используйте это значение для запроса вашей базы данных и повторного заполнения вашей второй базы данных.
dropdownlist
с соответствующими данными.