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