所以在windowsform中,我有两个ComboBoxes
和一个CheckedListBox
用于练习。当你选择你的健身类型时(健美操,重量,有氧运动等)和你的肌肉群(三头肌,胸部,背部,前臂等)那么你就应该从CheckedListBox
中获取练习。
两个ComboBoxes'
的默认值都是1,所以它应该在CheckedListBox
中显示类似于俯卧撑的样子,因为TypeFitness
=1表示健美操,MuscleGroup
=1表示前肩。
相反,它显示System.Data.DataRowView
,但当我第二次在表单中选择健美操时,它显示了正确的内容。有没有办法让它立即显示练习?
(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;
}
}
发布于 2019-03-14 18:29:08
问题是我把DataSource
放在了Exercises()
的最后。所以它应该是:
clbXcercises.DataSource = Xdata;
clbXcercises.DisplayMember = "Naam";
clbXcercises.ValueMember = "X.ExerciseId";
https://stackoverflow.com/questions/55158262
复制相似问题