在GridView中禁用动态添加的CheckBox列

时间:2009-05-06 20:03:47

标签: c# dynamic dataset checkbox

我正在向DataSet动态添加布尔列。 DataSet的表是GridView的DataSource,它自动生成列。

问题:此动态生成列的复选框全部被禁用。我该如何启用它们?

ds.Tables["Transactions"].Columns.Add("Retry", typeof(System.Boolean));
ds.Tables["Transactions"].Columns["Retry"].ReadOnly = false;

换句话说,如何控制GridView如何为布尔字段生成CheckBox? (为什么将ReadOnly设置为False没有效果?)

谢谢!

3 个答案:

答案 0 :(得分:1)

您应该添加CellContentClick事件处理程序并否定该单元格已有的值。喜欢:

private void dgvRaceDetails_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
            if (e.ColumnIndex == 5)
            {
                dgvRaceDetails.Rows[e.RowIndex].Cells[5].Value =
                    !(Boolean)dgvRaceDetails.Rows[e.RowIndex].Cells[5].Value;
            }

            if (e.ColumnIndex == 6)
            {
                dgvRaceDetails.Rows[e.RowIndex].Cells[6].Value =
                    !(Boolean)dgvRaceDetails.Rows[e.RowIndex].Cells[6].Value;
            }
}

答案 1 :(得分:0)

我相信它们会自动禁用,直到它们有值。

DataRow row = ds.Tables["Transactions"].NewRow();
row("Retry") = true;
ds.Tables["Transactions"].Rows.Add(row)

答案 2 :(得分:-1)

将Boolean的值设置为true。其默认值为false。我希望这会有所帮助。