【发布时间】:2015-10-15 08:50:19
【问题描述】:
我有一个datagridview,其中一个单元格的类型为DatagridviewComboBoxCell。对于这个单元格,我将数据源关联到它并提到了DisplayMember 和ValueMember 属性。
现在在加载网格时,我可以看到带有下拉列表的单元格和所有需要的项目。但是当我选择一个特定项目并移动到其他单元格时,这个ComboBoxcell 显示ValueMember 而不是DisplayMember。
例如Combobox 中列出了月份,例如 January, February...December。所以这里的 DisplayMember 是 January,February...December,ValueMember 是各自的月份编号,如 1,2,3...12。因此,当我选择说January 并移动到任何其他单元格时,ComboBoxCell 会显示月份编号,即1,以防January。
我希望单元格以通用术语显示January 或DisplayMember,而不是ValueMember。
请让我知道如何实现这一目标。请注意,我不想将整个列用作DataGridViewComboBoxColumn。
代码如下:
Using Conn = New SqlConnection(ConnString)
dt = New DataTable
Dim da As New SqlDataAdapter("SELECT DateName(M,'1900-' + CONVERT(VARCHAR, X.iMonth) + '-01') sMonth, X.iMonth " & _
" FROM (SELECT TOP 12 ROW_NUMBER() OVER(ORDER BY name) iMonth from sys.objects) X", Conn)
da.Fill(dt)
End Using
For Each dr As DataGridViewRow In DataGridView1.Rows
Dim ComboCell As New DataGridViewComboBoxCell
DataGridView1("sNotes", dr.Index) = ComboCell
ComboCell.DataSource = dt
ComboCell.DisplayMember = "sMonth"
ComboCell.ValueMember = "iMonth"
Next
【问题讨论】:
-
请与我们分享您的相关代码,以便我们为您提供帮助。
-
@equisde:代码已添加到问题正文中。
-
我想代码是在加载你的 DataGrid 时执行的。如果是这样,您的代码中没有任何内容可能导致上述问题。确保您在
DataGridView.CellValueChanged或DataGridView.CellEnter事件中没有代码 -
@equisde:最初加载网格时,带有 ComboCell 的列保持空白。您可以稍后选择该项目。但是,当您选择该项目并按选项卡离开组合单元时,文本将变为相应的值。就像在我离开单元格时选择“一月”时,组合单元显示 1
-
看我的回答。希望对你有帮助。
标签: c# vb.net datagridview