首页 > 解决方案 > 如何使用mysql查询将datagridview中的文本框列替换为复选框列

问题描述

我有这个问题,我想在 vb.net 中将文本框列转换为复选框。数据来自mysql,我希望将一列显示为复选框列。

到目前为止,这是我的代码:

Private Sub data_load()

     Dim mycommand As New MySqlCommand
     Dim myadapter As New MySqlDataAdapter
     Dim mydata As New DataTable

     conn = New MySqlConnection
     conn.ConnectionString = connstr

     conn.Open()

     mycommand.Connection = conn
     mycommand.CommandText = "SELECT locator_id, name AS 'NAME', date AS 'DATE', destination AS 'DESTINATION', time_leave AS 'TIME LEAVE', time_return AS 'TIME RETURN', isOfficial AS 'OFFICIAL?' FROM locator_table ORDER BY locator_id DESC"

     myadapter.SelectCommand = mycommand
     myadapter.Fill(mydata)

     DataGridView1.DataSource = mydata
     DataGridView1.Refresh()
End Sub

这是图像:

结果

如您所见,Official?列不是复选框。

现在,我想Official?成为复选框列。列中的值Official?只有 1 和 0。当值为 1 时应选中复选框,否则取消选中。如何做到这一点?

标签: mysqlvb.net

解决方案


您可以将列添加到 DataTable 中,手动指定 OFFICIAL 的 Boolean 数据类型?柱子。当 DataTable 绑定到网格时,它将显示复选框。

您可以将连接字符串直接传递给连接的构造函数,并将命令文本和连接直接传递给命令的构造函数。Using...End Using 块确保数据库对象即使出现错误也被关闭和处置。

如果您以后需要 DataAdapter 来更新数据库,您可以创建一个。

Private Sub data_load()
    Dim mydata As New DataTable
    mydata.Columns.Add("locator_id", GetType(Integer))
    mydata.Columns.Add("NAME", GetType(String))
    mydata.Columns.Add("DATE", GetType(Date))
    mydata.Columns.Add("DESTINATION", GetType(String))
    mydata.Columns.Add("TIME LEAVE", GetType(String))
    mydata.Columns.Add("TIME RETURN", GetType(String))
    mydata.Columns.Add("OFFICIAL?", GetType(Boolean))
    Using conn As New MySqlConnection(constr)
        Using mycommand As New MySqlCommand("SELECT locator_id, name AS 'NAME', date AS 'DATE', destination AS 'DESTINATION', time_leave AS 'TIME LEAVE', time_return AS 'TIME RETURN', isOfficial AS 'OFFICIAL?' FROM locator_table ORDER BY locator_id DESC", conn)
            conn.Open()
            mydata.Load(mycommand.ExecuteReader)
        End Using
    End Using
    DataGridView1.DataSource = mydata
End Sub

推荐阅读