帮助将窗口格式的复选框列添加到DataGridView

时间:2009-06-23 20:48:54

标签: vb.net winforms ado.net

我正在尝试在简单的窗体表单应用程序中向DataGridView添加一个复选框列。

我使用ADO.NET从数据库中提取一些数据,放入数据表,然后将datagridview数据源设置为数据表。然后我想添加一个复选框列作为第二列。到目前为止,我有这个代码似乎工作:

' Code here to connect to database
Dim da As New SqlDataAdapter(cmd)
Dim dt As New DataTable
da.Fill(dt)

MainForm.MyDataGridView.DataSource = dt

Dim ChkBox As New DataGridViewCheckBoxColumn

ChkBox.FlatStyle = FlatStyle.Standard
MainForm.MyDataGridView.Columns.Insert(1, ChkBox)

此代码“有效”,我得到MyDataGridView以显示表格中正确位置的复选框列的数据。

但是,出于某种原因,我无法检查DataGridView中的任何复选框?我已经尝试了很多东西(比如改变列的只读状态),但无法使其工作。

有什么明显的东西我不见了吗?

6 个答案:

答案 0 :(得分:11)

通过以下方法在DataGridView的属性中添加新列:

  1. 从属性中选择列 面板并双击它
  2. 然后选择“ 添加... ”按钮
  3. 然后将新列设置为“ Unbound 专栏
  4. 为其命名并选择其类型 “ DataGridViewCheckBoxColumn
  5. 设置所需的标题并制作 确定 只读 地选择。
  6. 就是这样。

    (如果数据库字段(在SQL Server中)的类型为“bit”,则datagridview会自动将其作为复选框而不是文本框映射到datagridview。无需编码。)

答案 1 :(得分:6)

Private Sub ADD_Column()

  Dim AddColumn As New DataGridViewCheckBoxColumn

  With AddColumn
    .HeaderText = "ColumnName"
    .Name = "Column Name that will be displayed"
    .Width = 80
  End With

  dgAdmin.Columns.Insert(1, AddColumn)

End Sub

答案 2 :(得分:3)

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
   if(dataGridView1.Columns.Count == 13 )
   {
       DataGridViewCheckBoxColumn chkSelect = new DataGridViewCheckBoxColumn();
       {
           chkSelect.HeaderText = "Select All";
           chkSelect.Name = "chkSelect";
           chkSelect.Selected = false;


       }
       dataGridView1.Columns.Insert(13, chkSelect);
   }

}    

答案 3 :(得分:2)

Dim checkBoxColumn As New DataGridViewCheckBoxColumn()
checkBoxColumn.HeaderText = ""
checkBoxColumn.Width = 30
checkBoxColumn.Name = "checkBoxColumn"
dataGridView1.Columns.Insert(0, checkBoxColumn)

答案 4 :(得分:1)

我曾经遇到过这个问题,但我解决了这个问题。 L从数据集加载数据并填充datagridview。我正在设置datagridview = True的readOnly属性,这意味着您无法修改datagridview中的数据。只需将AllowUserToAddColumn设置为False即可生成readOnly = False,这样就可以了。

答案 5 :(得分:0)

试试这个:

        DataGridViewCheckBoxColumn chkBoxCol = new DataGridViewCheckBoxColumn();
        DataGridView1.Columns.Add(chkBoxCol);