【发布时间】:2013-10-24 01:47:40
【问题描述】:
使用 ADO.net,如果我想从组合框中检索 ID,我只需这样做:
int idToGet = int.parse(tbCategory.SelectedValue.ToString());
然后完成,
但是当我用 EF 绑定组合框时,它会显示错误输入字符串格式不正确。所以当前值显示 { id = 7, category = TESTING } 而不是像往常一样。
这是我的代码 sn-p:
public void loadCategory()
{
tbCategory.DataSource = null;
var listCategoryObj = new malsic_inventoryEntities();
var query = from cat in listCategoryObj.Category
//join cat in listItmObj.Category on n.id_category equals cat.id
select new { cat.id,cat.category };
if (query.Count() > 0)
{
tbCategory.DataSource = query.ToList();
tbCategory.DisplayMember = "category";
tbCategory.ValueMember = "id";
tbCategory.Invalidate();
}
else
{
tbSubCategory.Enabled = false;
}
}
public void loadSubcategory()
{
tbSubCategory.DataSource = null;
int id_category_current = int.Parse(tbCategory.SelectedItem.Value.ToString());
var listSubCategoryObj = new malsic_inventoryEntities();
var query = from SubCat in listSubCategoryObj.SubCategories
where SubCat.id_category == id_category_current
select new { SubCat.id, SubCat.subcategory };
if (query.Count() > 0)
{
groupBox1.Enabled = true;
tbSubCategory.DataSource = query.ToList();
tbSubCategory.DisplayMember = "subcategory";
tbSubCategory.ValueMember = "id";
tbSubCategory.Invalidate();
}
else
{
groupBox1.Enabled = false;
}
}
我做错了什么?
【问题讨论】:
-
查看您的堆栈跟踪。你的错误在哪一行?您是否尝试解析不是 int 的字符串? stackoverflow.com/a/8321527/150342
-
@Colin,通常当我使用 ADO.net 然后使用 tbCategory.ValueMember = "id" 然后它只会检索 ID 号。但是对于 EF,ValueMember 不是“id”,而是 id 和 category 的组合。我怎样才能只获得 ID?
-
使用你的调试器。你的错误在哪一行?
-
ValueMember 不是“id”,而是组合...什么意思?你仍然设置
ValueMember = "id"。这里唯一可能出错的是cat.id包含的字符串不仅包含数字,或者包含null值。
标签: c# winforms entity-framework combobox