我正在尝试使用公司列表填充我的组合框,然后将所选公司(其Id
)的价值添加到我的数据库中。
我有这个课程CBItem
:
public class CBItem
{
public string Name { get; set; }
public int Value { get; set; }
public override string ToString()
{
return Name;
}
}
我使用以下方法将项目添加到组合框:
using (var db = new DataContext())
{
var list_of_companies = db.Companies;
foreach (Company c in list_of_companies)
{
CBItem item = new CBItem();
item.Name = c.Name;
item.Value = c.Id;
comboBox1.Items.Add(item);
}
}
问题是当我想获得所选项目的价值时,我尝试过这样的事情:
new_person.Company.Id = (comboBox1.SelectedItem).Value;
当然它不起作用:/任何提示?
答案 0 :(得分:0)
你是对的,这条线有问题:
new_person.Company.Id
我不知道出了什么问题。我有模型Person,它有公司id的外键。
也许我的数据库模型有问题。
我的人物模型:
public class Person
{
public Person()
{
}
public int PersonId { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Job { get; set; }
public int Phone { get; set; }
public int Mobile { get; set; }
public Company Company { get; set; }
}
公司型号:
public class Company
{
public Company()
{
}
public int Id { get; set; }
public string Name { get; set; }
public int NIP { get; set; }
public string Address { get; set; }
public string City { get; set; }
public int Code { get; set; }
public int Phone { get; set; }
public string Notes { get; set; }
public ICollection<Person> Person { get; set; }
}
保存代码:
using (var db = new DataContext())
{
Person new_person = new Person();
new_person.Name = textBox1.Text;
new_person.Surname = textBox2.Text;
new_person.Job = textBox3.Text;
new_person.Phone = Int32.Parse(textBox4.Text);
new_person.Mobile = Int32.Parse(textBox5.Text);
new_person.Company.Id = (comboBox1.SelectedItem as CBItem).Value;
db.Person.Add(new_person);
db.SaveChanges();
MessageBox.Show("Person successfully added!");
this.Close();
}
答案 1 :(得分:0)
如果符合以下条件,您的代码可以正常工作:
table.on('select',
function() {
var selectedRows = table.rows({ selected: true });
table.button(1).enable(selectedRows.count() > 0);
table.button(2).enable(selectedRows.count() === 1);
}
);
不是new_person
null
不是new_person.Company
null
不是combobox.SelectedItem
此外,您必须将null
投射到combobox.SelectedItem
,如下所示:
CBItem
作为站点注释而不是逐个添加每个项目,您可以通过将ComboBox通过其new_person.Company.Id = ((CBItem)comboBox1.SelectedItem).Value;
属性绑定到实现IList接口的对象或{{3}来归档相同的内容。 }}:
DataSource