【发布时间】:2015-07-12 09:42:17
【问题描述】:
表clients 有一个列country。这包含一个代码
- 荷兰
- 国标
- 等
表中国家/地区的长名称。我可以在窗口上放置一个 datagridview 并使用 sql 查询填充它,例如:
Dim myda As New MySqlDataAdapter
Dim dbDataset As New DataTable
Dim bSource As New BindingSource
Dim query = “SELECT clients.client_id, clients.client_name, countries.country country FROM clients LEFT OUTER JOIN countries ON countries.country_code = clients.country WHERE ..."
conn.Open()
Dim cmd = New MySqlCommand(query, conn)
myda.SelectCommand = cmd
myda.Fill(dbDataset)
bSource.DataSource = dbDataset
DataGridView1.DataSource = bSource
myda.Update(dbDataset)
conn.Close()
这可行并且长名称显示但只有当我给连接的列一个别名与客户表中的列名相同时,即country。这会覆盖客户列,我无法将另一个连接列添加到网格中。
有没有一种方法可以例如在同一网格中显示 GB 和 Great British?
第二个问题:没有datagridview我怎么能做到这一点? IE。将各个列拖到窗口中。使用表格适配器填充方法有点适用于直接查询,但我怎样才能实现上述目标?
【问题讨论】:
-
例如,
clients.country AS coountry_cd,没有理由不起作用。第二个问题 - 每次一个问题,当你问这个问题时,请详细说明你的目标,因为它不清楚。 -
感谢您的回答,对于第二个问题我很抱歉。我不太擅长解释自己,但是:网格来自一张表 - 客户有一列“国家”。如果我加入另一个表(国家)...clients.country 作为 country_code ... JOIN.... 作为国家,则加入的列将代替网格中的国家列,但不会显示 country_code。换句话说,我不能以这种方式向网格添加一列。我可以替换列但不能添加列。我肯定错过了一些基本的东西,但是什么?无论如何,感谢您的收听。
-
嗨,我要到那里了——慢慢来。我找到了一种添加列的方法。只有 DataGridView1.Columns.Add("country_code", "country_code") 我无法填充它。 ... clients.country 作为 country_code 不起作用。我将命令放在上面代码中的 comm.open() 之后。
-
你做的太多了。如果您的网格有
AutoGenerateColumnstrue,那么它将为您的DataTable 包含的任何内容创建列。你没有显示的东西是错误的。 Here 是使用网格的示例。虽然不能直接回答您的问题,但它可能对概念有所帮助。 -
感谢 Crowcoder! AutoGenerateColumns 做到了。非常感谢您的耐心等待。
标签: vb.net winforms datagridview