Так что в windowsform у меня есть 2 ComboBoxes
и один CheckedListBox
для упражнений. Когда вы выбираете свой тип физической подготовки (гимнастика, гири, кардио и т. Д.) И свою мышечную группу (трицепс, грудь, спину, предплечья и т. Д.), Вы должны выполнять упражнения из CheckedListBox
.
Оба ComboBoxes'
значения по умолчанию равны 1, поэтому в CheckedListBox
должно отображаться что-то вроде отжиманий, потому что TypeFitness
= 1 - это художественная гимнастика, а MuscleGroup
= 1 - переднее плечо.
Вместо этого он показывает System.Data.DataRowView
, но во второй раз, когда я выбираю художественную гимнастику в форме, он показывает правильную вещь. Есть ли способ сделать так, чтобы сразу показывались упражнения?
(System.Data.DataRowView
показывает только когда предыдущий выбор не имел результата)
Код:
private void TypeFitness()
{
string query = "SELECT FitnessId, Naam FROM TypeFitness";
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
DataTable TFdata = new DataTable();
adapter.Fill(TFdata);
comBoxTypeFitness.DisplayMember = "Naam";
comBoxTypeFitness.ValueMember = "FitnessId";
comBoxTypeFitness.DataSource = TFdata;
}
}
private void MuscleGroup()
{
string query = "SELECT MuscleId, Naam FROM MuscleGroup";
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
DataTable MGdata = new DataTable();
adapter.Fill(MGdata);
comBoxMuscleGroup.DisplayMember = "Naam";
comBoxMuscleGroup.ValueMember = "MuscleId";
comBoxMuscleGroup.DataSource = MGdata;
}
}
private void Exercises()
{
string query = "SELECT X.ExerciseId, X.Naam FROM Xercises AS X " +
"INNER JOIN MG_Exercise AS MGX ON MGX.ExerciseId = X.ExerciseId " +
"WHERE MGX.MuscleId = @MuscleId AND X.FitnessId = @FitnessId";
using (connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(query, connection))
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
SqlParameter param = command.Parameters.AddWithValue("@MuscleId", comBoxMuscleGroup.SelectedValue);
SqlParameter param2 = command.Parameters.AddWithValue("@FitnessId", comBoxTypeFitness.SelectedValue);
if(param.Value == null)
{
param.Value = DBNull.Value;
}
if(param2.Value == null)
{
param2.Value = DBNull.Value;
}
DataTable Xdata = new DataTable();
adapter.Fill(Xdata);
clbXcercises.DisplayMember = "Naam";
clbXcercises.ValueMember = "X.ExerciseId";
clbXcercises.DataSource = Xdata;
}
}