代码之家  ›  专栏  ›  技术社区  ›  peterchen

DataGridView中外键的组合框

  •  8
  • peterchen  · 技术社区  · 16 年前

    我有一个数据库,包含两个表,产品和许可证。 Licences.ProductID 有外键引用 Products.ProductID (即该产品的许可证)。

    如何在WinForms DataGridView中表示这种关系?

    当输入DataGridView(SQL Metal和通过LINQ to SQL)productlicenses.ProductID时,它会自动生成一个包含文本字段的列,该文本字段应为“Product”(当然我不能输入……)。

    如何更改此列以包含列出可用产品的组合框?


    我有一个连接(继承自 Linq.DataContext ),分配给DataGridView的数据源是 Link.IQueryable ,生成如下:

    var ds = from c in m_connection.Licences
        select c;
    
    1 回复  |  直到 15 年前
        1
  •  14
  •   Aaronaught    16 年前

    在本例中,您试图模仿的行为是一个查找组合。你不想使用 Product 磁场 License 同学们,你们真的想用 ProductID 领域

    下面是一个快速的步骤:

    1. 网格中的列;只保留 产品ID

    2. 产品ID ColumnType 属性到 DataGridViewComboBox列 .

    3. 更改此列的 DataSource BindingSource MyProject.Product (您只需遵循向导,可能与对网格本身执行向导的方式相同,但使用 而不是

    4. DisplayMember ProductName .

    5. 更改 ValueMember 产品ID .

    6. 填充 GridView productsBindingSource 使用产品数据,即 productBindingSource.DataSource = context.Products;

    就这样。现在当你 SubmitChanges (假设你保留了 DataContext 产品ID 产品 DataContext.Refresh 先用这个方法。但是不要担心这个问题,除非您需要在网格之外使用实体类。

    推荐文章