【问题标题】:Bound datagrid not showing values绑定数据网格不显示值
【发布时间】:2019-12-19 23:03:13
【问题描述】:

我有一个绑定到绑定源的数据网格,该绑定源本身是从列表中填充的。

我可以看到绑定源已填充,并且我可以看到数据网格具有与列表中的数据匹配的预期行数,但我无法获取要填充数据的列。我尝试为列设置 datapropertyname 但无济于事。我知道这可能很简单,但我正在兜圈子。

谁能帮忙

将 cE 变暗为新的 ClsEmail

    Dim bs As New BindingSource
    Dim dgv = Me.DataGridView1

    dgv.AutoGenerateColumns = False

    bs.DataSource = cE.GetMail("team@xxxx.xxxx")

    With dgv.Columns(0)
        .DataPropertyName = "ID"
        .HeaderText = "ID"

    End With

    With dgv.Columns(1)
        .DataPropertyName = "Subject"
        .HeaderText = "Subject"
    End With

    dgv.DataSource = bs

当我按下按钮填充数据网格时,我得到四行,但列中没有值。显然我没有正确绑定列,但我看不到我缺少什么。

【问题讨论】:

  • 您确定 ID 和 Subject 的 .DataPropertyNames 与您的 DataSource 上的字段名称的拼写完全相同吗?
  • 是的。创建源数据的datapropertyname
  • 我通过读取 Outlook 邮箱并创建具有三个属性的新类 ID、Subject 和 DataReceived 来生成数据,然后我使用这些相同的名称作为 dataperoptynames、相同的拼写、相同的大小写
  • 尝试设置 dgv.AutoGenerateColumns = true 以查看网格上显示的内容,它可能会给您一个提示。
  • cE.GetMail("team@xxxx.xxxx") 返回什么?也没有理由声明dgv(尤其是没有类型),直接使用DataGridView1。您还设置了两次 .DataSource 属性。你想用哪一个?

标签: vb.net datagrid


【解决方案1】:

List(Of T) 已经是可绑定的。像这样重新排列 Email 类中的属性,因为 DataGridView 将按属性顺序创建列:

Public Class Email 

    Public Property ID As Integer
    Public Property Subject As String 
    Public Property DateReceived As DateTime 

End Class

然后,只需像这样设置数据源:

With DataGridView1

    .AutoGenerateColumns = True
    .DataSource = cE.GetMail("team@xxxx.xxxx")
    .Columns(2).Visible = False ' DataReceived (if you really intended to hide this)

End With

【讨论】:

  • 好收获!更新了答案(修改了 Class Email 的代码)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多