显示计划名称但保留计划 ID 并在组合框中检索 ID 的值

Display plan name but hold plan ID and retrieve ID's value in combobox

我看了很多关于这方面的文章,但 none 到目前为止帮助很大。 我的 ComboBox 名称是 cbPlan。我想在它的显示中检索 PlanName,但实际上想保留它的 PlanID。 以下代码显示名称和 ID。我尝试了 ValueMember、DisplayMember、properties,但无法对其进行排序。 最后,即使成功了,我如何才能将 PlanID 插入另一个 table?我会使用 Convert.ToString(cbPlan.Text) - 这会带来 PlanName 而不是 ID。 请对此提供帮助-非常感谢您! :) P.S。 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";


            }
        }

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

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

你应该首先将你的数据从数据库中获取到一些数据表或数据集中,如上 cbPlan.DataSource = dt;

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