提问人:Bambang Setiawan 提问时间:11/2/2023 最后编辑:Joel CoehoornBambang Setiawan 更新时间:11/3/2023 访问量:52
VB.Net 在 datagridview 中显示手动设置标题的数据
VB.Net Display data in datagridview with headers set manually
问:
我有将在 datagridview 中显示的事务数据,但我在 datagridview 中手动创建的标头遇到困难 这是我创建并保存到数据库中的事务
在搜索中,我回想起这笔交易要显示
Private Sub fillform()
Dim table As New DataTable
dtproductdetail.DataSource = Nothing
Try
cmddetail = New SqlCommand("SELECT AP_T_PR_D.ProdCode, IV_M_Product.ProdName, AP_T_PR_D.QTY, IV_M_PackingType.PackingName
FROM IV_M_PackingType RIGHT OUTER JOIN
IV_M_Product ON IV_M_PackingType.PackingCode = IV_M_Product.PackingCodeDown RIGHT OUTER JOIN
AP_T_PR_D ON IV_M_Product.ProdCode = AP_T_PR_D.ProdCode
WHERE AP_T_PR_D.PRNumber = '" & selectedrow.Cells(0).Value.ToString() & "' ", conn)
Adp = New SqlDataAdapter(cmddetail)
Adp.Fill(table)
dtproductdetail.AutoGenerateColumns = True
dtproductdetail.DataSource = table
dtproductdetail.Refresh()
Catch ex As Exception
MessageBox.Show(ex.Message, "fillform", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
结果
答:
-1赞
jmcilhinney
11/2/2023
#1
如果您在设计器中创建了列,我认为这就是您的意思,那么为什么要设置为?如果要手动创建列,则不希望自动创建列。AutoGenerateColumns
True
设置为并确保为每个网格列正确设置。它应该设置为您希望它绑定到的那个。AutoGenerateColumns
False
DataPropertyName
ColumnName
DataColumn
实际上,如果您这样做并且网格和表格列的数量相同,那么设置什么就无关紧要了。您的问题具体在于您没有为至少其中一些网格列设置正确或根本没有设置。AutoGenerateColumns
DataPropertyName
评论
0赞
Bambang Setiawan
11/3/2023
抱歉,我忘了将 AutoGenerateColumns 更改为 false,但我通过添加“dtproductdetail.Columns.Add(New DataGridViewTextBoxColumn() 替换为 {.HeaderText = “产品代码”, .DataPropertyName = “ProductCode”})“ 根据 propertyname 列,但只填充了第 3 列,我的笔记是第 0、1、2 和 4 列只读 true
0赞
jmcilhinney
11/3/2023
@BambangSetiawan,为什么要添加代码?为什么不在设计器中添加这些列?
0赞
Vector
11/3/2023
#2
当窗体加载 DataGridView dgvTX 并设置其样式时,将调用此代码
Private Sub StyleDGV()
'Set Design of the DataGridView
dgvTX.DefaultCellStyle.Font = New Font("Times New Roman", 13.0F, FontStyle.Bold)
dgvTX.ColumnCount = 8
dgvTX.Columns(0).Width = 50 'ID
dgvTX.Columns(1).Width = 140 'Date
dgvTX.Columns(2).Width = 136 'TxType
dgvTX.Columns(3).Width = 120 'Amt
dgvTX.Columns(4).Width = 114 'ckNum
dgvTX.Columns(5).Width = 390 'Desc
dgvTX.Columns(6).Width = 130 'Bal
dgvTX.Columns(7).Width = 10 'dumbS
'To Set Col Header Size Mode = Enabled
'To Set Col Header Default Cell Styles DO in Properties
dgvTX.Columns(6).DefaultCellStyle.Format = "c"
dgvTX.ColumnHeadersHeight = 10 'Sans Serif 'Tahoma
dgvTX.ColumnHeadersDefaultCellStyle.Font = New Font("Sans Serif", 12.0F, FontStyle.Bold)
dgvTX.ColumnHeadersDefaultCellStyle.ForeColor = Color.Blue
dgvTX.DefaultCellStyle.BackColor = Color.LightGoldenrodYellow
dgvTX.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dgvTX.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
dgvTX.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dgvTX.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
'dgvTX.Enabled = False 'Prevents Selection of data and scrolling
'DGV Header Names
dgvTX.Columns(0).Name = "TID"
dgvTX.Columns(1).Name = " Date"
dgvTX.Columns(2).Name = " Tx Type"
dgvTX.Columns(3).Name = " Amount"
dgvTX.Columns(4).Name = " CK Num"
dgvTX.Columns(5).Name = "Desctiption"
dgvTX.Columns(6).Name = " Balance"
dgvTX.Columns(7).Name = " "
dgvTX.Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable
dgvTX.Columns(1).SortMode = DataGridViewColumnSortMode.NotSortable
dgvTX.Columns(2).SortMode = DataGridViewColumnSortMode.NotSortable
dgvTX.Columns(3).SortMode = DataGridViewColumnSortMode.NotSortable
dgvTX.Columns(4).SortMode = DataGridViewColumnSortMode.NotSortable
dgvTX.Columns(5).SortMode = DataGridViewColumnSortMode.NotSortable
dgvTX.Columns(6).SortMode = DataGridViewColumnSortMode.NotSortable
End Sub
评论
0赞
jmcilhinney
11/3/2023
但是,当所有这些属性都可以在设计器中设置时,为什么要编写这些代码呢?
0赞
Vector
11/3/2023
@jmcilhinney 因为我可以更好地控制属性中的设计和设置,所以这是劳动密集型的,而且我可以通过更改一些变量在其他项目中回收此代码 尝试一下,你会喜欢的
0赞
jmcilhinney
11/3/2023
“我可以更好地控制设计”。不,你没有。你在那里所做的一切都做不到;在设计器中完成。它们是相同的属性,因此您具有相同的控制级别。“在物业中设置是劳动密集型的”。点击几个框真的比输入代码更费力吗?“我可以在其他项目中回收这些代码”。在设计器中执行的操作会生成代码,因此可以将该代码复制到另一个项目,就像复制手动编写的代码一样容易。“你会喜欢的”。我向你保证,我不会。
0赞
Bambang Setiawan
11/4/2023
我已经成功尝试使用列添加 datapropertyname 并使用代码设置 datagrid,但是当我尝试编辑以添加新的产品行时会出现问题。“当控件是数据绑定的时,无法以编程方式将行添加到 DataGridView 的行集合中。”
评论