-1

我在我的 c# windows 应用程序中有以下代码,我试图在其中插入与每一行对应的复选框。当我单击所选行之外的按钮时,应删除。但我无法使用此代码选择复选框。

dataGridView1.ReadOnly = false;
OleDbCommand SQLQuery = new OleDbCommand();
DataTable data = null;
dataGridView1.DataSource = null;
SQLQuery.Connection = null;
OleDbDataAdapter dataAdapter = null;
dataGridView1.Columns.Clear(); 

SQLQuery.CommandText = sqlQueryString;
SQLQuery.Connection = database;
data = new DataTable();
dataAdapter = new OleDbDataAdapter(SQLQuery);
dataAdapter.Fill(data);
dataGridView1.DataSource = data;
dataGridView1.AllowUserToAddRows = true; // remove the null line
dataGridView1.ReadOnly = true;
dataGridView1.Columns[0].Visible = true;
dataGridView1.Columns[1].Width = 340;
dataGridView1.Columns[2].Width = 55;          
// insert checkbox button into datagridview
deleteck = new DataGridViewCheckBoxColumn();
deleteck.HeaderText = "delete";     
deleteck.Width = 80;
deleteck.ReadOnly = false;         
dataGridView1.Columns.Insert(0, deleteck); 

谁能帮我弄清楚这里出了什么问题?

4

3 回答 3

1

我找到了这个解决方案:

    dataGridView1.DataSource = data;
    For Each dc as DataColumn in dt.Columns
        dc.ReadOnly = true
    Next

    dataGridView1.AllowUserToAddRows = true; 
    // dataGridView1.ReadOnly = true;
    dataGridView1.Columns[0].Visible = true;
    dataGridView1.Columns[1].Width = 340;
    dataGridView1.Columns[2].Width = 55;          
    deleteck = new DataGridViewCheckBoxColumn();
    deleteck.HeaderText = "delete";     
    deleteck.Width = 80;
    deleteck.ReadOnly = false;         
    dataGridView1.Columns.Insert(0, deleteck);

这样,只有复选框是可编辑的,而其余的列集合在数据源级别被标记为只读。

于 2013-05-17T19:44:18.893 回答
0

您必须选中 DataGridView 任务列表中的启用编辑复选框。这是屏幕截图

在此处输入图像描述

于 2015-01-13T04:57:13.447 回答
0

这是我的代码错误。

dataGridView1.ReadOnly = true;

当我刚刚评论以上行时,它起作用了。

于 2013-05-17T19:44:19.450 回答