如何设置datagridviewcomboboxcell文本

问题描述 投票:0回答:2

目标

SteelTypes的datagridview具有已绑定到数据视图(SteelThicknesses)的列。我可以选择数据并正确设置。但是,我无法加载相同的信息。我的datagridview comboboxcell包含值和已编辑格式的文本,但是我无法设置文本信息。

当前问题

除组合框列外,我所有的文本框列均已正确加载。 cbCol的变量已正确设置,并且EditedFormattedValue和FormattedValue包含我想要的值!但是,该值不会复制到datagridviewcombobox单元中。

我试图通过将其值设置为主键(PK_SteelThickness)在Épaisseur(厚度)列中显示“ 3”:

enter image description here

请参见下面的结果。除我的comboboxcell之外的所有内容都已填充:enter image description here

提前感谢帮助,这让我发疯了:)

vb.net winforms datagridview dataview datagridviewcomboboxcell
2个回答
0
投票

您不设置文字。您设置基础ID。这个想法是将列绑定到父表,并将网格绑定到具有该父表外键的子表。您在网格单元格中设置外键值,并显示父表中的相应文本值。

作为示例,假设您有一个Handedness表,如下所示:

编号名称1对2左3灵巧

并且您有一个Person表,如下所示:

ID名称HandednessId彼得一书22保罗13玛丽3

在网格中,您将创建一个DataGridViewComboBoxColumn并将其DataPropertyName属性设置为“ HandednessId”。然后,将Person表绑定到网格时,HandednessId列将绑定到组合框列。您可以将Handedness表绑定到该列,并将DisplayMemberValueMember分别设置为“名称”和“ Id”。然后,网格将分别为“ Peter”,“ Paul”和“ Mary”显示“左”,“右”和“ Ambidextrous”。如果要使Peter变得灵巧,可以将HandednessId单元格Value设置为3,然后显示“ Ambidextrous”。

请参阅此以获取更多信息:

Adding a ComboBox Column to a DataGridView


0
投票

似乎您在这里为自己做了很多工作。只需将其设置为

,即可使用Datagridcombobox对其进行解码
  • [DataSource设置为提供键/值查找的内容,例如,SteelThicknesses数据表具有两列Disp和Val,并且具有诸如"Thick",1"Medium", 2"Thin", 3
  • DisplayMember设置为包含要显示的文本的查找表中列名称的字符串,例如“ Disp”,
  • ValueMember设置为查找中具有与要显示的文本相关的值的字符串列名称,例如“ Val”和
  • DataPropertyName设置为另一个表中具有要解码的值(查找表的Val列中的值之一)的属性(列)的名称(例如,具有SteelThicknessID列的Products表)。
  • datagridview绑定到产品数据表,该组合将找到例如在steelthicknessid列中为3,它将在steelthicknesses表的Val列中向上查找3,并显示在steelthickesses的该行的Disp列中找到的文本。如果用户通过删除组合列表并选择THICK来更改显示的值,它将进行相反的操作,并从Val列中选取1,并用steelthicknessid的新值1更新产品Take。如果您不希望这样做,请将该列或datagridview设置为只读

有关更多讨论,请参见我在DataGridView Loading From LINQ中的回答

© www.soinside.com 2019 - 2024. All rights reserved.