[英]How to add dynamically control when checkbox in datagridview is checked vb.net
我为此感到疲倦
如何从datagridview中的复选框动态添加文本框、标签和表单?
这是我的代码
Sub getDataWIP()
dgvbool = False
D_DATA.Columns.Clear()
Dim dt As DataTable = getData("SELECT created_at AS 'TANGGAL', assy_code AS 'ASSY CODE', model AS 'MODEL', lot_no AS 'LOT NUMBER', " &
"remark AS 'REMARK', qty AS QTY, shift AS SHIFT, pic AS PIC " &
"FROM WIP_AUTO")
D_DATA.DataSource = dt
Dim checkBoxColumn As New DataGridViewCheckBoxColumn()
checkBoxColumn.HeaderText = ""
checkBoxColumn.Width = 30
checkBoxColumn.Name = "checkBoxColumn"
D_DATA.Columns.Insert(0, checkBoxColumn)
dgvbool = True
End Sub
还有这个
Private Sub P_PRINT_Click(sender As Object, e As EventArgs) Handles P_PRINT.Click
Template.Show()
Dim message As String = String.Empty
For Each row As DataGridViewRow In D_DATA.Rows
Dim isSelected As Boolean = Convert.ToBoolean(row.Cells("checkBoxColumn").Value)
If isSelected Then
message += Environment.NewLine
message += row.Cells("MODEL").Value.ToString()
Dim txt As New Label
txt.Text = row.Cells("MODEL").Value
txt.Location = New Point(50, 50)
Template.Controls.Add(txt)
End If
Next
End Sub
将它添加到您的 SQL 查询会容易得多。 我假设您使用 SQL Server。 DataGridView 应将此生成为复选框列
Sub getDataWIP()
D_DATA.Columns.Clear()
Dim dt As DataTable = getData("SELECT created_at AS TANGGAL, ASSY_CODE, MODEL, lot_no AS ""LOT NUMBER"", REMARK, QTY, SHIFT, PIC, CAST(0 as BIT) as PRINT FROM WIP_AUTO")
D_DATA.DataSource = dt
End Sub
迭代数据表,而不是 gridview
Private Sub P_PRINT_Click(sender As Object, e As EventArgs) Handles P_PRINT.Click
Template.Show()
Dim message As String = String.Empty
For Each row As DataRow In DirectCast(D_DATA.DataSource, DataTable).Rows
Dim isSelected = row.Field(Of Boolean)("checkBoxColumn")
If isSelected Then
Dim mdl = row.Field(Of String)("MODEL")
message += Environment.NewLine
message += mdl
Dim txt As New Label
txt.Text = mdl
txt.Location = New Point(50, 50)
Template.Controls.Add(txt)
End If
Next
End Sub
我不知道将新标签始终放置在同一点 50,50 有什么意义
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.