【问题标题】:Get ID value from combo box with entity framework从带有实体框架的组合框中获取 ID 值
【发布时间】: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


【解决方案1】:

我认为您的问题与 ADO.NET 或实体框架无关。我认为您的问题与int.Parse 有关。尝试以这种方式设置id_category_current,而不是现在的方式:

int id_category_current;
if(!int.TryParse(tbCategory.SelectedItem.Value.ToString(), out id_category_current))
{
   groupBox1.Enabled = false;
   return;
}

【讨论】:

    猜你喜欢
    • 2017-05-23
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多