使用实体框架保存组合框值
本文关键字:组合 保存 框架 实体 | 更新日期: 2023-09-27 17:57:56
这个问题看起来很简单,但当我从组合框中保存所选项目时,我会得到这个结果
{ 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();
任务。Responsible_person是一个字符串属性。
这里我只想得到用户名。
这是因为cbResponsiblePerson.SelectedItem
是查询返回的匿名对象之一。对其执行ToString()
将打印对象。如果您想要名称,您可能希望将匿名类型定义为真实类型。
如果您在WinForms中,您可以执行以下操作:
cbResponsiblePerson.GetItemText(cbResponsiblePerson.SelectedItem)
为什么在之前启动ResponsibleUser
时用null
检查它!。
获取user_name
:
cbResponsiblePerson.Text
并得到user_id
:
cbResponsiblePerson.SelectedValue
你的DataSource有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);