繁体   English   中英

使用实体框架保存组合框值

[英]Saving a combo box value using Entity Framework

这个问题似乎很简单,但是当我从组合框中保存所选项目时,我得到了这个结果

{ user_name = Amanda, user_id = 1 }

这是我的用于加载组合框的代码段

   //Task list ----> Load  users (Responsible person) into a combo box
    private void ComboResponsiblePerson()
    {
        //Get  list of users into the combo box
        //Task Tab
        BindingSource ResponsibleUser = new BindingSource();

        ResponsibleUser.DataSource = db.users.Select(_user => new
        {
            _user.user_name,_user.user_id
        }).ToList();

        if (ResponsibleUser != null)
        {

            cbResponsiblePerson.DataSource = ResponsibleUser;

            cbResponsiblePerson.DisplayMember = "user_name";
            //cbResponsiblePerson.d
            cbResponsiblePerson.ValueMember = "user_id";
        }

    }

这是我的代码段,以获取“组合框”的“选定项”

task.responsible_person = cbResponsiblePerson.SelectedItem.ToString();

Task.Responsible_person是一个字符串属性。

在这里,我只想获取用户名。

这是因为cbResponsiblePerson.SelectedItem是查询返回的匿名对象之一。 在其上执行ToString()将打印对象。 如果需要名称,则可能需要将匿名类型定义为实型。

如果您使用WinForms,则可以执行以下操作:

cbResponsiblePerson.GetItemText(cbResponsiblePerson.SelectedItem)

为什么在启动befor!之前,为什么将ResponsibleUser检查为null

要获得user_name

cbResponsiblePerson.Text

并获取user_id

cbResponsiblePerson.SelectedValue

您的数据源具有Ananymouse Type成员,您可以使用Reflection获取值:

 var selectedItem = cbResponsiblePerson.SelectedItem;
 var idp = selectedItem.GetProperty("user_id");
 var namep = selectedItem.GetProperty("user_name");
 var user_id  = idp.GetValue(selectedItem);
 var user_name = namep.GetValue(selectedItem);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM