2017-01-08 2 views
0

У меня есть 2 comboboxes. txtlocation, txtstepcombobox filter в C# на основе другого значения

Я добавил этот пункт statically.The пункты txtlocation являются: TO QC TP MAT SUP DCC FIN REC SIG

И txtstep элементов:

TO As SUP 
TO As PIP 
TO HW 
TO MOD 
TO FSQ 
QC HW 
QC LC 
QC RE 
QC TEST 
QC PAD 
QC WJCS 
TP 
MAT NIS 
MAT DATA 
SUP ASBUILT 
SUP REPORT 
SUP REPORT/ASBUILT 
DCC MONO LC 
DCC MONO RE 
FIN LC 
FIN PAD 
FIN TEST 
FIN DRY 
FIN FL 
FIN RE 
REC FIN LC 
REC FIN PAD 
REC FIN TEST 
REC FIN DRY 
REC FIN FL 
REC FIN RE 
SIG LC 
SIG PAD 
SIG TEST 
SIG DRY 
SIG FL 
SIG RE 

добавить событие (selectedindexchang) на txtlocation .if пользователя выберите TO Шаг TO должен быть отфильтрован. TO As SUP TO As PIP TO HW TO MOD TO FSQ

Должен ли я использовать источник данных?

private void txtlocation_SelectedIndexChanged(object sender, EventArgs e) 
     { 
     } 
+0

Вы можете использовать 'DataSet'. Или вы можете просто создать массив имен и отфильтровать их. – Prajwal

+0

@Prajwal можно ли фильтровать непосредственно список элементов combobox? –

+0

Да. Или вы можете добавлять элементы, как только установлено другое значение combobox. – Prajwal

ответ

1

Различных DataSources будут, возможно, понятнее образом, вы можете использовать Dictionary<TLocation, List<TStep>> для связывания выбранного значения с корреспондентским источником данных.

private Dictionary<string, List<string>> _data = new Dictionary<string, List<string>> 
{ 
    { "TO", new List<string> { "TO AS SUP", "TO AS PIP" }}, 
    { "DCC", new List<string> { "DCC MONO LC", "DCC MONO RE" }}, 
    { "MAT", new List<string> { "MAT NIS", "MAT DATA" }}, 
}; 

comboBoxLocation.DataSource = data.Keys.ToList(); 

Использование SelectedValueChanged EventHandler для установки правильного источника данных beased по выбору местоположения.

private void comboBoxlocation_SelectedValueChanged(object sender, EventArgs e) 
{ 
    var comboBoxLocations = (ComboBox)sender; 
    comboBoxSteps.DataSource = _data[comboBoxLocations.SelectedValue.ToString()]; 
} 

Если у вас есть только один список шагов, вы можете отфильтровать список и установить фильтрованный результат как DataSource.

При таком подходе вы будете циклически перебирать список каждый раз, когда вы вносили изменения в поле со списком местоположения.