【问题标题】:Get ComboBox Value From Two Tables从两个表中获取 ComboBox 值
【发布时间】: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 个表中获取数据。

【问题讨论】:

    标签: c# wpf linq combobox datasource


    【解决方案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 ?
      • 根据您放在那里的代码似乎没有更好的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多