0

我有一个 ComboBox,我从实体框架模型中填充它。

ComboBox.DataSource = (from x in _context.myTable
                                         where x.isActive == true
                                         select new {
                                                        x.Name,
                                                        x.ID
                                                    }
                                         ).Distinct().ToList();

ComboBox.DisplayMember = "Name";
ComboBox.ValueMember = "ID";
ComboBox.SelectedIndex = -1;
ComboBox.Invalidate();

问题是:每次Combox选择发生变化时,我想检索myTable(SQL Server表)的ID(PK标识号)列后面的信息,但是ComboBox.SelectedValue返回的标识号错误。实际上,它返回 Index + 1。

private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    Console.WriteLine("ComboBox.SelectedValue=" + ComboBox.SelectedValue);        
}

您能否提一些建议?

4

1 回答 1

0

我也遇到了同样的问题,我找到了一个非常简单的解决方案。绑定comboBox可能有问题,如果您可以尝试使用此代码绑定comboBox。

using (DatabaseEntities db_entity = new DatabaseEntities())
        {
            comboBox1.DataSource = db_entity.TableName.ToList();
            comboBox1.ValueMember = "ID";
            comboBox1.DisplayMember = "Name";
        }

您可以检索 ValueMember (在您的情况下为“ID”)。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (comboBox1.SelectedIndex > 0)
        {
            int _id = Convert.ToInt32(comboBox1.SelectedValue);
        }
    }
于 2021-09-02T17:25:24.280 回答