【问题标题】:Display plan name but hold plan ID and retrieve ID's value in combobox显示计划名称但保留计划 ID 并在组合框中检索 ID 的值
【发布时间】:2017-02-24 10:55:40
【问题描述】:

我看过很多关于此的文章,但到目前为止没有任何帮助。 我的组合框名称是 cbPlan。我想在它的显示中检索 PlanName,但想实际保存它的 PlanID。 以下代码同时显示名称和 ID。我尝试了 ValueMember、DisplayMember、属性,但还无法对其进行排序。 最后,即使这成功了,我将如何在另一个表中插入 PlanID?我会使用 Convert.ToString(cbPlan.Text) - 这将带来 PlanName 而不是 ID。 请对此提供帮助 - 非常感谢您提前! :) 附言PlanID 的数据类型是 int。

private void cbPlan_Click(object sender, EventArgs e)
        {
            cbPlan.Items.Clear();

            string pullsub = "select PlanID,PlanName from fbkPlanMaster(nolock)";
            string connString = ConfigurationManager.ConnectionStrings["Dbconn"].ToString();
            SqlConnection connection = new SqlConnection(connString); // defining sql connection
            SqlCommand cmd = new SqlCommand(pullsub, connection);
            cmd.CommandText = pullsub;
            connection.Open();
            SqlDataReader drd = cmd.ExecuteReader();
            while (drd.Read())
            {

                cbPlan.Items.Add(drd["PlanID"]);
                cbPlan.Items.Add(drd["PlanName"]);
                cbPlan.ValueMember = "PlanID";
                cbPlan.DisplayMember = "PlanName";


            }
        }

【问题讨论】:

  • 是winform还是webform?

标签: c# visual-studio combobox dataset valuemember


【解决方案1】:

首先修改您的方法以将项目添加到您的组合框中,您不应该使用 Reader。第二,不想显示为什么还要加上PlanID? 这段代码可以帮助你...

cbPlan.DataSource = dt;
cbPlan.ValueMember = "PlanID";
cbPlan.DisplayMember = "PlanName";

您应该首先将您的数据从数据库中获取到某个数据表或上述数据集cbPlan.DataSource = dt;

这会将您的 ID 保存为 ValueMember 作为 ID,其显示的文本将为 PlanName。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 2021-12-18
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2022-01-22
    相关资源
    最近更新 更多