1

所以在windowsform中我有2个ComboBoxes和1个CheckedListBox用于练习。当您选择您的类型健身(健美操、举重、有氧运动等)和您的肌肉群(三头肌、胸部、背部、前臂等)时,您应该从CheckedListBox.

两个ComboBoxes'默认值都是 1,所以它应该在 中显示类似俯卧撑的东西CheckedListBox,因为TypeFitness= 1 是健美操,MuscleGroup= 1 是前肩。

相反,它显示System.Data.DataRowView,但我第二次选择 Calisthenics 时,它显示了正确的内容。有没有办法让它立即显示练习?

System.Data.DataRowView仅在之前的选择没有结果时显示)

代码:

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;
    }
}
4

1 回答 1

0

问题是我放在DataSource最后Exercises()。所以应该是:

clbXcercises.DataSource = Xdata;
clbXcercises.DisplayMember = "Naam";
clbXcercises.ValueMember = "X.ExerciseId";
于 2019-03-14T10:29:08.420 回答