带空格的匿名类型成员名称?

时间:2014-06-04 17:15:24

标签: vb.net

我正在处理数据库的用户界面。由于我将数据库表复制到我自己的数据集中的原因,我从那里查询这些表以加入它们。这有效(除了某些类型的问题,但这不是重点),但我希望我的DataGridView的列标题每个标题最多有两个单词(对于漂亮的显示)。

以下是查询:

Dim query = _
            From bidInfo In dataset.Tables("BidInfo").AsEnumerable() _
            Join projectInfo In dataset.Tables("ProjectInfo").AsEnumerable() _
            On projectInfo.Field(Of String)("Project") Equals bidInfo.Field(Of String)("Project") _
            Join contractorInfo In dataset.Tables("ContractorInfo").AsEnumerable() _
            On contractorInfo.Field(Of String)("Contractor") Equals bidInfo.Field(Of String)("Contractor") _
            Join contactInfo In dataset.Tables("ContactInfo").AsEnumerable() _
            On contactInfo.Field(Of String)("Contractor") Equals bidInfo.Field(Of String)("Contractor") And contactInfo.Field(Of String)("Contractor Contact") Equals bidInfo.Field(Of String)("Contractor Contact")
            Select New With { _
                .BidNumber = projectInfo.Field(Of String)("BidNumber"), _
                .Project = projectInfo.Field(Of String)("Project"), _
                .TimeDue = projectInfo.Field(Of String)("TimeDue"), _
                .Architect = projectInfo.Field(Of String)("Architect"), _
                .ArchitectPhone = projectInfo.Field(Of String)("ArchitectPhone")}

然后我用

dataGridView1.DataSource = query.ToList

除了双字列标题(BidNumber,TimeDue,ArchitectPhone)外,这一切都很好看。我如何在其中获得空间?我已尝试在会员名称上加上括号等,但它不是那样的。

我必须有一种我缺失的语法,但我还没有从我的有限研究中找到它(通常人们会说字段名称中的空格是一个坏主意,但这是为了显示)。 / p>

作为第二部分,为什么当我有一个字段(Of Double)时,DataGridView什么都不显示?

提前感谢您的帮助。

编辑: 我已经在一个问题中找到了一个临时解决方案(How to Set Custom DataGridView Headers (with spaces) using LINQ?)我似乎已经重复了= / 手动提供的解决方案遍历列并重新设置标题。这与我想要的结果相同,但如果我向数据库添加一列,我宁愿最小化我必须更改的内容。如果有人有办法从正确的列标题开始,那就太好了。如果没有,不用担心,并感谢花时间阅读所有文本=)

1 个答案:

答案 0 :(得分:0)

Nico的评论看起来是最好的方式,但如果你不想定义课程,你也可以使用丑陋的黑客。由于VB.NET属性名称不能包含空格,因此在您想要空格的位置放置下划线 - 例如.Bid_Number。然后(未测试,伪代码)......

dataGridView1.DataSource = query.ToList()
For Each col In dataGridView1.Columns
    If col.Name.Contains("_") Then
        col.HeaderText = col.Name.Replace("_", " ")
    End If
Next