Jag har ett problem där flera ComboBoxar fylls från samma datakälla. Mitt problem är att när man då väljer en post i den ena comboBoxen, så väljs denna post även i de övriga. Den lösning jag hittills hittat är att göra en lokal kopia av datakällan för varje combobox. Då kan man välja poster individuellt i varje combobox. Nackdelen med detta är att jag då manuellt måste se till att alla lokala kopiorna av datakällan alltid innehåller aktuell data. Vad jag kan se är det som du har gjort, det som du ska göra. Kanske kan du möjligen fia till hanteringen av dina egendefinierade datakällor. Mening med att databinda är att få just det beteende som du har på dina dropdowns -> Du måste i ditt fall ha olika datakällor för dina dropdowns. Bull and crap, Perfekt, det funkar som jag tänkt mig. I så fall får du själv skapa egan vyklasser som skapar vyer över dina kollektioner. "Bull and crap,..." kanske inte så välgrundat argument. Datavyer är per definition <b>inte</b> datakällor. Det är precis som namnet anger, en vy (alltså en bild) av en datakälla. All data ligger fortfarande i DataTabeln och det är således källan.Flera Comboboxar med samma DataSource
Är det någon som har en bättre lösning på detta?
/PerSSv: Flera Comboboxar med samma DataSource
//Mikael SandSv: Flera Comboboxar med samma DataSource
det enda du behöver göra är att skapa två individuella datavyer av din data, så att du får två separata currencymanagers:
<code>
sqlDataAdapter1.Fill(dsData1);
DataView dvProd1 = new DataView(dsData1.Products);
DataView dvProd2 = new DataView(dsData1.Products);
comboBox1.DataSource = dvProd1;
comboBox2.DataSource = dvProd2;
comboBox1.DisplayMember = "ProductName";
comboBox2.DisplayMember = "ProductName";
</code>
nu är det fritt fram att göra alla ändringar du vill i den underliggande datakällan och det kommer att reflekteras i de båda vyerna, men det du ändrar i vyerna (current, sort osv) kommer bara synas på din specifika vy och således i din specifika combobox.Sv: Flera Comboboxar med samma DataSource
Nu till mitt nästa problem. Kan man få samma funktionalitet om man istället för ett dataset har en objekt collection som ärver från System.Collections.CollectionBase?
/PerSv: Flera Comboboxar med samma DataSource
Sv: Flera Comboboxar med samma DataSource
Jag skulle nämligen vilja påminna om att vyer ÄR datakällor.
Kanske det kan vara något att tänka på.
//Mikael SandSv: Flera Comboboxar med samma DataSource
Det innebär i praktiken att internt så har vyn referenser till exakt samma objekt som tablen har, skillnaden är att en vy har egna iterators och currencymanagers som ger åtkomst till din data "genom ett fönster" och påverkar hur du ser på den.
Därför är utalandet:
"Kanske kan du möjligen fia till hanteringen av dina egendefinierade datakällor"
eller för den sakens skull även det övriga svaret inte speciellt korrekt och mer komplicerat, svävande och otydligt än förklarande, därav min starka reaktion och rättelse.
<b>PS!</b>
För övrigt kan nämnas att alla datakontroller i .net använder sig av vyer, oavsett vi ber dem att göra det eller inte. Om du skickar in en datatable till en grid, så kommer den att be om "defaultview", så egentligen bör vi alltid jobba med egna vyer vilket som.