繁体   English   中英

选中datagridview中的复选框时如何动态添加控件vb.net

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM