我正在尝试在简单的窗体表单应用程序中向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中的任何复选框?我已经尝试了很多东西(比如改变列的只读状态),但无法使其工作。
有什么明显的东西我不见了吗?
答案 0 :(得分:11)
通过以下方法在DataGridView的属性中添加新列:
就是这样。
(如果数据库字段(在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);