【发布时间】:2017-04-29 13:20:30
【问题描述】:
我有一个包含 2 个表(产品和类别)的简单数据库,下面的代码是在组合框中选择的类别之一下的产品表中创建一个新产品。
public partial class frmAddProduct : Form
{
public frmAddProduct()
{
InitializeComponent();
db = new DatabaseEntities();
}
DatabaseEntities db;
string category = "";
Product _product;
private void frmAddProduct_Load(object sender, EventArgs e)
{
categoryBindingSource.DataSource = db.Categories.ToList();
CategoryList();
}
private void CategoryList()
{
var list = db.Categories.ToList();
cboCategory.DataSource = list;
cboCategory.DisplayMember = "CategoryName";
cboCategory.ValueMember = "CategoryID";
if (cboCategory.Items.Count > 1)
cboCategory.SelectedIndex = -1;
}
private void btnNew_Click_1(object sender, EventArgs e)
{
_product = new Product();
int id = int.Parse(txtID.Text);
decimal price = decimal.Parse(txtPrice.Text);
int qty = int.Parse(txtPrice.Text);
_product.ProductID = id;
_product.ProductName = txtName.Text;
_product.UnitPrice = price;
_product.UnitsInStock = qty;
_product.CategoryID = int.Parse(category);
db.Products.Add(_product);
db.SaveChanges();
}
private void cboCategory_SelectedIndexChanged(object sender, EventArgs e)
{
category = cboCategory.SelectedValue.ToString();
}
}
当我运行表单时,会出现一个错误,提示“附加信息:对象引用未设置为对象的实例”。错误是指代码中的下一行:
category = cboCategory.SelectedValue.ToString();
有人知道这里有什么问题吗?
注意:CategoryID 是数据库中的整数字段。
【问题讨论】:
-
调试时,该行的哪个值是
null? -
而不是使用:
cboCategory.SelectedValue.ToString();使用cboCategory.Text;这将获得选定的文本。 -
使用
cboCategory.Text;值成员是“CategoryID”没有意义,它是产品表中的外键。这就是我输入cboCategory.SelectedValue.ToString();的原因 -
大卫,错误出现在这里:
private void cboCategory_SelectedIndexChanged(object sender, EventArgs e) { category = cboCategory.SelectedValue.ToString(); }
标签: c# visual-studio entity-framework