首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ComboBox首先显示System.Data.DataRowView

ComboBox首先显示System.Data.DataRowView
EN

Stack Overflow用户
提问于 2019-03-14 16:48:16
回答 1查看 45关注 0票数 1

所以在windowsform中,我有两个ComboBoxes和一个CheckedListBox用于练习。当你选择你的健身类型时(健美操,重量,有氧运动等)和你的肌肉群(三头肌,胸部,背部,前臂等)那么你就应该从CheckedListBox中获取练习。

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

相反,它显示System.Data.DataRowView,但当我第二次在表单中选择健美操时,它显示了正确的内容。有没有办法让它立即显示练习?

(System.Data.DataRowView仅在前一次选择没有结果时显示)

代码:

代码语言:javascript
运行
复制
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;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-03-14 18:29:08

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

代码语言:javascript
运行
复制
clbXcercises.DataSource = Xdata;
clbXcercises.DisplayMember = "Naam";
clbXcercises.ValueMember = "X.ExerciseId";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55158262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档