@aurel nie mam zamiaru kombinować i stworzyć to najprostszą możliwą techniką.
A teraz konkretnie.
w załączniku screen fragmentu bazy.
a poniżej sposób jaki przyjołem :
public static class StaticData
{
public static BindingSource BSource = new BindingSource();
public static DataTable DTable = new DataTable();
public static DataTable ComboDT1 = new DataTable();
public static DataTable ComboDT2 = new DataTable();
public static DataTable ComboDT3 = new DataTable();
public static DataTable ComboDT4 = new DataTable();
}
public partial class MainForm : Form
{
public BindingSource MyBS;
public Connection myConn; // clasa do obsługi bazy firmy.
public BindingSource MyBS
.
.
.
private void MainForm_Load(object sender, EventArgs e)
{
try
{
myConn = new Connection(); // naawiązanie polaczenia
myBS = new BindingSource();
myDT = new DataTable();
myDT = myConn.GetData("Select * from Badania"); // wykonanie zapytania
myBS.DataSource = myDT;
StaticData.BSource = myBS; // globalnie dostępne zmienne
StaticData.DTable = myDT;
this.dataGridView1.DataSource = myBS;
this.dataGridView1.Columns["upsize_ts"].Visible = false;
this.dataGridView1.Columns[0].Visible = false;
}
}
}
// w ten sposób uzupełniam DataGridView
Przy wywołaniu formularza edycji uzupełniam danymi poprzez
private void EditForm_Load(object sender, EventArgs e)
{
StaticData.ComboDT1 = myConn.GetData("Select * from Instytucje");
StaticData.ComboDT2 = myConn.GetData("Select * from Uprawy");
StaticData.ComboDT3 = myConn.GetData("Select * from Status");
StaticData.ComboDT4 = myConn.GetData("Select * from Osoby");
this.maskedTextBox1.DataBindings.Add("Text", StaticData.BSource, "Rok");
this.textBox1.DataBindings.Add("Text", StaticData.BSource, "Nazwa_badania");
this.textBox2.DataBindings.Add("Text", StaticData.BSource, "Koszt_badania");
this.textBox3.DataBindings.Add("Text", StaticData.BSource, "Uwagi");
this.comboBox1.DataSource = StaticData.ComboDT1;
this.comboBox1.DisplayMember = "Nazwa_instytucji";
this.comboBox2.DataSource = StaticData.ComboDT2;
this.comboBox2.DisplayMember = "Nazwa_uprawy";
this.comboBox3.DataSource = StaticData.ComboDT3;
this.comboBox3.DisplayMember = "Status";
this.comboBox4.DataSource = StaticData.ComboDT4;
this.comboBox4.DisplayMember = "Osoba_odpowiedzialna";
}
Za pomocą comboboxów uzupełniam dane z zdefiniowanych "słowników" + mam możliwość dodania wpisów do baz relacyjnych przez "dodaj" obok parametrów.
Czy ma ktoś pomysł jak rozwiązać problem comboboxów tak aby ni trzeba było tworzyć dla nich osobnych Datatable ?
Marzy mi się sposób w którym na początku ładowany byłby DataSet z wszystkimi danymi w bazie, z niego uzupełniane były by dane w kontrolkach, na nim były by przeprowadzane zmiany i dodawanie danych a na koncu wszystko by się updatowało. nie przewiduję aby baza urosła do jakiś olbrzymich rozmiarów.
Proszę o pomoc.