检索组合框选定值时出现问题 [英] Problem in retrieving combobox selected value

查看:46
本文介绍了检索组合框选定值时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过这种方式填写组合框



I Fill combo box by this way

KimyatEntities db = new KimyatEntities();
           var BranchData = db.SpSelectBranch();
           CBBranchName.DataSource = BranchData.ToList();
           CBBranchName.DisplayMember = "Branch_Name";
           CBBranchName.ValueMember = "Branch_ID";





我想在linq查询中选择组合值







I Want to take combo box Selected Value in linq query


int BranchID=Convert.ToInt32(CBBranchName.SelectedValue);

          var EmployeeData = from E in db.EmployeeTbls
                             join B in db.BranchTbls
                             on E.Branch_ID equals B.Branch_ID
                             where E.Branch_ID == BranchID
                             select new { E.Employee_Name, E.Hire_Date, B.Branch_Name };
 DGVEmployee.DataSource = EmployeeData;





我有什么试过:



出现错误



无法投射'KimyatPro'类型的对象.BranchTbl'键入'System.IConvertible'。



What I have tried:

there is error appear

Unable to cast object of type 'KimyatPro.BranchTbl' to type 'System.IConvertible'.

推荐答案

您所说的错误可能是由于您的第二个代码段中的最后一行。因为在分配数据源之前

,你必须强制执行查询以使用ToList()获取内存中的数据:



The error you are saying is probably due to that last line in your 2nd snippet. Because
just before assigning the datasource, you have to force query execution to get the data in memory using ToList():

DGVEmployee.DataSource = EmployeeData.ToList();


我通过添加


1)属性

I Solve the problem by adding

1) properties
public int BranchSelectedID { get; set; }





2)Calss





2) Calss

private class BranchItem
       {
          // I Take this class variable to take the Selected value from combo box control
           public int ID;
           public string Name;

           public BranchItem(int BranchID, string BranchName) //This is construct that initiate the Class
           {
               ID = BranchID;
               Name = BranchName;
           }

           public override string ToString()
           {
               return Name; //this for text that appear in Combo Box control
           }
       }





3)绑定组合盒代码





3) Bind combo Box code

void bindBranch_ComboBox()
       {
           db = new KimyatEntities();
           CBBranchName.Items.Clear();
           var BranchData = (from B in db.BranchTbls
                             select new { B.Branch_ID, B.Branch_Name }).ToList();
           foreach (var item in BranchData)
           {
               CBBranchName.Items.Add(new BranchItem(item.Branch_ID, item.Branch_Name));
           }

       }





之后绑定网格视图取决于组合Box选择的索引已更改





After that bind Grid View Depending on the Combo Box Selected Index Changed

private void CBBranchName_SelectedIndexChanged(object sender, EventArgs e)
       {

           int SelectedBranch = CBBranchName.SelectedIndex;

           BranchItem Selected = CBBranchName.Items[SelectedBranch] as BranchItem;
           if (Selected!=null)
           {
              BranchSelectedID = Selected.ID;
           }
           DGVEmployee.Rows.Clear();
           DataGridViewRow row = new DataGridViewRow();
           row.CreateCells(DGVEmployee);
           var EmployeeData = from E in db.EmployeeTbls
                              join B in db.BranchTbls
                              on E.Branch_ID equals B.Branch_ID
                              where E.Branch_ID == BranchSelectedID
                              select new { E.Employee_ID, E.Employee_Name, E.Hire_Date, B.Branch_Name };
           if (EmployeeData != null)
           {

               foreach (var item in EmployeeData)
               {
                   row.Cells[0].Value = item.Employee_ID;
                   row.Cells[1].Value = item.Employee_Name;
                   row.Cells[2].Value = item.Hire_Date;
                   row.Cells[3].Value = item.Branch_Name;
                   DGVEmployee.Rows.Add(row);
               }
           }
       }


这篇关于检索组合框选定值时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆