У меня есть два списка (регионы и отделы), когда моя форма загружает список Регионов, заполнен 4 регионами (Midwest, NorthEast, South, West). Когда я нажимаю на один из этих регионов, я хочу, чтобы список перечней был заполнен делениями, относящимися к области, которая была нажата. Я работаю через репозиторий данных, который связывается с моим SQL-db. Первоначальное население при виде нагрузкиКак заполнить список на основе выбранного элемента из другого списка?
StateRepository sr = new StateRepository();
foreach (string s in sr.GetRegions())
{
lstRegions.Items.Add(s);
}
код позади метода GetRegions:
public IEnumerable<string> GetRegions()
{
try
{
List<string> results = new List<string>();
using (var conn = new SqlConnection(Settings.Default.StateAnalysisConnection))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "Select * From Regions ";
conn.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
results.Add((string)reader["Region"]);
}
}
}
}
return results;
}
catch (Exception ex)
{
throw new Exception("Database error in StateRepository", ex);
}
finally
{
if (connection.State == ConnectionState.Open)
connection.Close();
}
}
Метод, который получает подразделения в регионе из БД:
public IEnumerable<string> GetDivisionsInRegion(string region)
{
try
{
List<string> results = new List<string>();
var divisions = new List<string>();
using (var conn = new SqlConnection(Settings.Default.StateAnalysisConnection))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "Select Division From Divisions "
+ "Where Region = '" + region + "'";
conn.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
results.Add((string)reader["Division"]);
}
}
}
}
return results;
}
catch (Exception ex)
{
throw new Exception("Database error in StateRepository", ex);
}
finally
{
if (connection.State == ConnectionState.Open)
connection.Close();
}
}
Хорошо, это сработало хорошо, и я применил его к третьему списку. Но в третьем поле он использует метод ToString() моего класса. Поэтому вместо StateAbberv я получаю краткое описание моего состояния. Есть ли способ обойти это? – ScottT
отбросить его к вашему объекту, затем использовать свойство (StateAbbrev, возможно?), Чтобы получить нужное значение. – monty