Za problem sa ComboBox-ovima (drop down) predlažem rešenje u kome ćeš za izvore podataka ovih kontrola da koristiš DataTable.
Napravi dve DataTabele sa podacima koji će biti povezani na master-detail način kao SQL tabele koje povezuje relacija i u event handleru SelectionChanged prvog ComboBox-a unesi kod kojim ćeš da filtriraš podatke u drugom ComboBox-u.
Primer ispod ima dosta koda zbog popunjavanja DataTabela ali je najbitnije ukapirati nekoliko redova pred kraj Form1_Load metode kao i jedini red u comboBox1_SelectedIndexChanged metodi.
Ako nešto nije jasno, reci.
Code:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private DataTable dt1;
private DataTable dt2;
private void Form1_Load(object sender, EventArgs e)
{
dt1 = new DataTable("dt1");
dt1.Columns.Add(new DataColumn("Id", Type.GetType("System.Int32")));
dt1.Columns.Add(new DataColumn("Tip", Type.GetType("System.String")));
DataRow dRow1 = dt1.NewRow();
dRow1[0] = 1;
dRow1[1] = "Voće";
dt1.Rows.Add(dRow1);
dRow1 = dt1.NewRow();
dRow1[0] = 2;
dRow1[1] = "Povrće";
dt1.Rows.Add(dRow1);
dRow1 = dt1.NewRow();
dRow1[0] = 3;
dRow1[1] = "Napitci";
dt1.Rows.Add(dRow1);
dRow1 = dt1.NewRow();
dRow1[0] = 4;
dRow1[1] = "Jela";
dt1.Rows.Add(dRow1);
dt2 = new DataTable("dt2");
dt2.Columns.Add(new DataColumn("Id", Type.GetType("System.Int32")));
dt2.Columns.Add(new DataColumn("TipId", Type.GetType("System.Int32")));
dt2.Columns.Add(new DataColumn("Naziv", Type.GetType("System.String")));
DataRow dRow2 = dt2.NewRow();
dRow2[0] = 1;
dRow2[1] = 1;
dRow2[2] = "Jabuka";
dt2.Rows.Add(dRow2);
dRow2 = dt2.NewRow();
dRow2[0] = 2;
dRow2[1] = 2;
dRow2[2] = "Luk";
dt2.Rows.Add(dRow2);
dRow2 = dt2.NewRow();
dRow2[0] = 3;
dRow2[1] = 2;
dRow2[2] = "Kupus";
dt2.Rows.Add(dRow2);
dRow2 = dt2.NewRow();
dRow2[0] = 4;
dRow2[1] = 2;
dRow2[2] = "Paradaiz";
dt2.Rows.Add(dRow2);
dRow2 = dt2.NewRow();
dRow2[0] = 5;
dRow2[1] = 2;
dRow2[2] = "Paprika";
dt2.Rows.Add(dRow2);
dRow2 = dt2.NewRow();
dRow2[0] = 6;
dRow2[1] = 3;
dRow2[2] = "Sok";
dt2.Rows.Add(dRow2);
dRow2 = dt2.NewRow();
dRow2[0] = 7;
dRow2[1] = 3;
dRow2[2] = "Voda";
dt2.Rows.Add(dRow2);
dRow2 = dt2.NewRow();
dRow2[0] = 8;
dRow2[1] = 3;
dRow2[2] = "Vino";
dt2.Rows.Add(dRow2);
dRow2 = dt2.NewRow();
dRow2[0] = 9;
dRow2[1] = 4;
dRow2[2] = "Pasulj";
dt2.Rows.Add(dRow2);
dRow2 = dt2.NewRow();
dRow2[0] = 10;
dRow2[1] = 4;
dRow2[2] = "Sarma";
dt2.Rows.Add(dRow2);
comboBox1.DataSource = dt1;
comboBox1.DisplayMember = "Tip";
comboBox2.DataSource = dt2.DefaultView;
comboBox2.DisplayMember = "Naziv";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
dt2.DefaultView.RowFilter = "TipId = " + dt1.Rows[comboBox1.SelectedIndex].ItemArray[0].ToString();
}
}
Drugo pitanje nisam razumeo.