将列添加到DataGridView中最后一列的数据表剪切

时间:2019-04-24 16:10:10

标签: c# vb.net datagridview

我正在从vb.net的SQL查询中构建数据表

一旦我使用填充数据表

' Build DataTable to Store Result
Dim dt As DataTable = New DataTable()
Dim da As SqlDataAdapter = New SqlDataAdapter(sqlCommand)
' Fill DataTable From SQL Query
da.Fill(dt)

我要添加两列以合并某些数据,例如名字和姓氏

' Merge Columns
dt.Columns.Add("RECIPIENT", GetType(String)).SetOrdinal(0)
dt.Columns.Add("PURCHASER", GetType(String)).SetOrdinal(1)
For Each Row As DataRow In dt.Rows
    Row("RECIPIENT") = String.Format("{0} {1}", Trim(Row("INSURED_FIRST_NAME")), Trim(Row("INSURED_LAST_NAME")))
    Row("PURCHASER") = String.Format("{0} {1}", Trim(Row("PAYOR_FIRST_NAME")), Trim(Row("PAYOR_LAST_NAME")))
Next

最后,我正在使用DataGridView在表单上显示内容。但是,看来DAtaGridView正在切断最后一列。

' Add DataTable as DataSource and Auto Generate Columns
dgvContent.DataSource = Records
dgvContent.AutoGenerateColumns = True

例如,如果我的列IDINSURED_FIRST_NAMEINSURED_LAST_NAMEPAYOR_FIRST_NAMEPAYOR_LAST_NAMETOTAL_COST

一旦将AutoGenerateColumns设置为true,它将为所有字段创建列标题,但最后一个字段除外,在此情况下为TOTAL_COST

为什么会这样呢?除了

' Add Blank Column to DataTable so `AutoGenerateColumns` Generates All Visible Columns Correctly
dt.Columns.Add("BLANK", GetType(String))

1 个答案:

答案 0 :(得分:0)

' Build DataTable to Store Result
Dim dt As DataTable = New DataTable()
Dim da As SqlDataAdapter = New SqlDataAdapter(sqlCommand)
' Fill DataTable From SQL Query
da.Fill(dt)

在上面的代码块中,修改sqlCommand变量以包括以下列

INSURED_FIRST_NAME + ' ' + INSURED_LAST_NAME AS RECIPIENT, PAYOR_FIRST_NAME + ' ' + PAYOR_LAST_NAME AS PURCHASER

一起删除以下块

' Merge Columns
dt.Columns.Add("RECIPIENT", GetType(String)).SetOrdinal(0)
dt.Columns.Add("PURCHASER", GetType(String)).SetOrdinal(1)
For Each Row As DataRow In dt.Rows
    Row("RECIPIENT") = String.Format("{0} {1}", Trim(Row("INSURED_FIRST_NAME")), Trim(Row("INSURED_LAST_NAME")))
    Row("PURCHASER") = String.Format("{0} {1}", Trim(Row("PAYOR_FIRST_NAME")), Trim(Row("PAYOR_LAST_NAME")))
Next

下面的块不执行您的想法,默认情况下,“ AutoGenerateColumns”在DGV上为true,也仅在设置数据源之前相关。

' Add DataTable as DataSource and Auto Generate Columns
dgvContent.DataSource = Records
dgvContent.AutoGenerateColumns = True