2011-09-05 220 views
1

我正在使用datagridviewcomboboxcell显示值。我希望这个单元格的值是int。但是:当我打开组合框时,我希望看到组合框中每个项目的描述。当我选择一个值时,这个值会改变(组合框被关闭),而可见值只是int。有没有人有想法如何做到这一点?datagridview中的c#组合框

喜欢:选择的项目:2

扩展组合框:0 - 烯 1 - 由于 2 - 日科 3 - 假 感谢您的帮助。

+0

你很可能需要设置DataTextField和DataValueField属性。 –

+0

我不明白。 WHERE在datagridviewcomboboxcell类不是textfieldcelll – santBart

+0

这是一个WinForm或WebForm(ASP.NET)项目? –

回答

1

即使你会找到一种设置TextField和ValueField的方法,我严重怀疑当控件显示下拉列表(数字和文本)时,会有不同的文本呈现,并且它已折叠并仅显示为下拉列表关闭(仅限数量)。

你问的东西当然有意义,但是你不会为了设置几个属性而毫不费力地运行它。

在Windows处理这种形式,你应该拦截事件:EditingControlShowing,并在那里,对于组合框,指定自定义值的控制,这里是一个起点:

void dataGridView1_EditingControlShowing(object sender, 
      DataGridViewEditingControlShowingEventArgs e) 
     { 
      if (e.Control is ComboBox) 
      { 
       ComboBox cmb = e.Control as ComboBox; 

       // here you can work on the ComboBox... 
      } 
     } 

以了解详情这里:DataGridView.EditingControlShowing Event

+0

嗯。也许我误解了这个问题。我的回答不起作用,如果这是他想要做的... –

+1

她。感谢帮助;) – santBart

0

您需要将ValueMember属性设置为您的对象中的任何属性都是“id”。要设置可见文本,请将属性设置为DisplayMember属性。如果此数据网格绑定到数据库记录或某种类型,则上面提到的属性应该是要绑定的表字段的名称。

+0

valuemember和displaymember的addit如何对items.add方法进行核对? – santBart

+0

假设您绑定了一个对象列表,烘焙到DataGridView中的代码将搜索对象中与您附加到上述属性的名称匹配的属性名称。 –