SteelTypes的datagridview具有已绑定到数据视图(SteelThicknesses)的列。我可以选择数据并正确设置。但是,我无法加载相同的信息。我的datagridview comboboxcell包含值和已编辑格式的文本,但是我无法设置文本信息。
除组合框列外,我所有的文本框列均已正确加载。 cbCol的变量已正确设置,并且EditedFormattedValue和FormattedValue包含我想要的值!但是,该值不会复制到datagridviewcombobox单元中。
我试图通过将其值设置为主键(PK_SteelThickness)在Épaisseur(厚度)列中显示“ 3”:
请参见下面的结果。除我的comboboxcell之外的所有内容都已填充:
提前感谢帮助,这让我发疯了:)
您不设置文字。您设置基础ID。这个想法是将列绑定到父表,并将网格绑定到具有该父表外键的子表。您在网格单元格中设置外键值,并显示父表中的相应文本值。
作为示例,假设您有一个Handedness
表,如下所示:
编号名称1对2左3灵巧
并且您有一个Person
表,如下所示:
ID名称HandednessId彼得一书22保罗13玛丽3
在网格中,您将创建一个DataGridViewComboBoxColumn
并将其DataPropertyName
属性设置为“ HandednessId”。然后,将Person
表绑定到网格时,HandednessId
列将绑定到组合框列。您可以将Handedness
表绑定到该列,并将DisplayMember
和ValueMember
分别设置为“名称”和“ Id”。然后,网格将分别为“ Peter”,“ Paul”和“ Mary”显示“左”,“右”和“ Ambidextrous”。如果要使Peter变得灵巧,可以将HandednessId
单元格Value
设置为3,然后显示“ Ambidextrous”。
请参阅此以获取更多信息:
似乎您在这里为自己做了很多工作。只需将其设置为
,即可使用Datagridcombobox对其进行解码"Thick",1
"Medium", 2
"Thin", 3
,datagridview绑定到产品数据表,该组合将找到例如在steelthicknessid列中为3,它将在steelthicknesses表的Val列中向上查找3,并显示在steelthickesses的该行的Disp列中找到的文本。如果用户通过删除组合列表并选择THICK来更改显示的值,它将进行相反的操作,并从Val列中选取1,并用steelthicknessid的新值1更新产品Take。如果您不希望这样做,请将该列或datagridview设置为只读
有关更多讨论,请参见我在DataGridView Loading From LINQ中的回答