我正在处理数据库的用户界面。由于我将数据库表复制到我自己的数据集中的原因,我从那里查询这些表以加入它们。这有效(除了某些类型的问题,但这不是重点),但我希望我的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?)我似乎已经重复了= / 手动提供的解决方案遍历列并重新设置标题。这与我想要的结果相同,但如果我向数据库添加一列,我宁愿最小化我必须更改的内容。如果有人有办法从正确的列标题开始,那就太好了。如果没有,不用担心,并感谢花时间阅读所有文本=)
答案 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