Witam,
jestem w trakcie robienia amatorskiego programu. Baze danych mam w MDF i glownie wyciagam dane z nich za pomoca sqlReader. W trakcie pracy znalazlem taki o to sposob na wyciaganie danych i wrzucanie od razu do listbox, gridView itd.
http://screenshot.sh/oAfiNSerb8gxj
Pytani moje brzmi czy taki sposob jest okay czy raczej unikac i lepiej 'recznie' w kodzie to zapisac?
Wczesniej robilem to w taki sposob:
SqlEasierCommands sqlCmd = new SqlEasierCommands(conDB); SqlDataReader reader = sqlCmd.GetExecutedReader("SELECT Name FROM Attributes ORDER BY Position ASC"); new FillerValuesBox().FillListBox(checkedListBox1, new SqlReaderToListConverter().getListFromReader(reader)); /////////////////////////////////////////////////wrzucam klase jezeli sie przyda class FillerValuesBox { public void FillCheckedListBox(CheckedListBox box, List<string> list, List<string> listToBeChecked) { box.BeginUpdate(); foreach (string item in list) { if (listToBeChecked.Contains(item)) box.Items.Add(item, true); else box.Items.Add(item); } box.EndUpdate(); } public void FillListBox(ListBox box, List<string> list) { box.BeginUpdate(); foreach (string item in list) box.Items.Add(item); box.EndUpdate(); } }
Na pewno duzo latwiej i szybciej jest sobie kliknac tak jak na screenie i juz mam gotowe. Problem pojawia sie gdy, robie za pomoca executeNonQuery jakis update do bazy danych. Nie wiem jak odswiezyc dane wtedy w tych listboxach (sposob jak na screenie). Poradzilem sobie w taki sposob - implementujac taki kod po nacisnieciu przycisk Zatwierdz/ Wyslij (executeNonQuery) :
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter("SELECT * FROM Attributes ORDER BY Position", conDB); DataTable dataTable = new DataTable(); sqlDataAdapter.Fill(dataTable); attributesBindingSource.DataSource = dataTable;
Sposob ten jest wg mnie troche bez sensu, bo robie tak jakby drugie DataTable. Prosilbym o rady jak sobie radzic z takimi problemami