从两个表中获取 ComboBox 值

Posted

技术标签:

【中文标题】从两个表中获取 ComboBox 值【英文标题】:Get ComboBox Value From Two Tables 【发布时间】:2020-09-09 22:35:16 【问题描述】:

我有两张桌子:

TblNum

TblMaster


TblMasterTblNum 有关系(NumID

我有 1 个组合框,我想将数据值加载到我的组合框,方法是从 TblMaster 读取并从 TblNum 显示 Number

实际上,我在加载表单上使用此代码:

    private void frmOrgChartsManage_Load(object sender, EventArgs e)
    
        //Load ComboBox Source from MasterTable
        using (UnitOfWork db = new UnitOfWork())
        
            // At first assign properties DisplayMember and ValueMember.
            cmbMaster.DisplayMember = "NumID";
            cmbMaster.ValueMember = "MasterID";

            // And then assign DataSource property of the cmbMaster.
            cmbMaster.DataSource = db.MasterRepository.Get();
        
    

使用此代码,我可以在我的组合框中看到 (1, 2, 3, 4, 5)

预期结果

如何在我的DisplayMember 中加载Number01 , Number02 , Number03 , Number04 , Number05 而不是1, 2, 3, 4, 5

编辑: 我需要从TblMaster 获取数据值并从TblNum 中查看名称

    cmbMaster.DisplayMember = "Number";
    cmbMaster.ValueMember = "MasterID";

我不知道如何为 1 个组合框从 2 个表中获取数据。

【问题讨论】:

【参考方案1】:

我想办法解决我的问题

为其他人编写代码,也许有人也有这个问题

private void frmOrgChartsManage_Load(object sender, EventArgs e)

    //Load ComboBox Source from MasterTable
    using (UnitOfWork db = new UnitOfWork())
    
        // At first assign properties DisplayMember and ValueMember.
        cmbMaster.DisplayMember = "Number";
        cmbMaster.ValueMember = "MasterID";

        // And then assign DataSource property of the cmbMaster.
        var result = (from master in db.MasterRepository.Get()
                              join number in db.tblNumRepository.Get() on master.NumID equals number.NumID 


                              select new
                              
                                  master.MasterID,
                                  number.Number,

                              ).ToList();
                cmbMaster.DataSource = result;
    

【讨论】:

【参考方案2】:

把代码改成

private void frmOrgChartsManage_Load(object sender, EventArgs e)
        
            //Load ComboBox Source from MasterTable
            using (UnitOfWork db = new UnitOfWork())
            
                // At first assign properties DisplayMember and ValueMember.
                cmbLayerName.DisplayMember = cmbNumber.Where(x => x.NumID == "NumID").Select(y => y.Number).First();
                cmbLayerName.ValueMember = "MasterID";

                // And then assign DataSource property of the cmbMaster.
                cmbMaster.DataSource = db.MasterRepository.Get();
                cmbNumber.DataSource = db.NumberRepository.Get();

            
        

您正在绑定到 NumID,您需要在其中绑定到 Number

【讨论】:

数字在 TblNum 中,我加载 cmbMaster.DataSource = db.MasterRepository.Get(); (我将数据绑定到 mastertable 我如何也可以从 numtable 获取数据) 阿里我根据您的反馈进行了更改。如果您有任何问题,请告诉我。 我必须添加具有此名称的新组合框cmbNumber ? 根据您放在那里的代码似乎没有更好的解决方案。

以上是关于从两个表中获取 ComboBox 值的主要内容,如果未能解决你的问题,请参考以下文章

Dojo:dojo onblur 事件

双击datagridview后,Combobox中的SelectedValue

在 MS Access 中使用 VBA 查看 Combobox 中的唯一值

我想从两个表中获取值

尝试从 ComboBox 的字典中获取值并将键插入 textEdit

数据库:如何从具有一个公共列的两个表中获取多个值