arkagdynia napisał(a)
Jeśli chodzi o wypełnienie danymi ComboBoxa to robię tak Jest on ładowany podczas Ładowania Formy :
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Ankieta", myCon);
DataTable dt = new DataTable();
da.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
cmbWyborAnkiety.Items.Add(dt.Rows[i]["NazwaAnkiety"]);
}
Następnie w zdarzeniu ComboBox_SelectedIndexChanged
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Pytania WHERE ID_Ankieta = " + Convert.ToInt32(ComboBox.SelectedIndex + 1), myCon);
DataTable dataTable = new DataTable("Pytania");
da.Fill(dataTable);
DataTableReader dtr = dataTable.CreateDataReader();
myCon.Close();
while (dtr.Read())
{
txtNazwaPytania.Text = dtr["Nazwa_Pytania"].ToString();
}
}
I Wyświetla mi się jedno pytanie O danym ID_Ankieta a chciałbym teraz żebym mógł zobaczyć kolejne Pytania które mają podane ID_Ankieta.
-
To:** DataTableReader dtr** musisz sobie zadeklarować "wyżej", a w ComboBox_SelectedIndexChanged zostawić tylko dtr = dataTable.CreateDataReader();
-
Zamiast
while (dtr.Read())
{
txtNazwaPytania.Text = dtr["Nazwa_Pytania"].ToString();
}
daj sobie
if (dtr.Read())
{
txtNazwaPytania.Text = dtr["Nazwa_Pytania"].ToString();
}
- W obsłudze buttona też daj :
if (dtr.Read())
{
txtNazwaPytania.Text = dtr["Nazwa_Pytania"].ToString();
}
Ewentualnie po tym ifie daj elsa z tekstem "koniec pytań" jak już nie będzie nic do odczytu.