数据源为只读-C#
我有一个DataGridView,它的属性是数据源为只读-C#,c#,datagridview,datasource,C#,Datagridview,Datasource,我有一个DataGridView,它的属性是DataSource=datatable()和readonly=falsereadonly必须为false,因为还有其他可以编辑的列。如何使数据源中的所有列都为只读(不可编辑) 代码如下: type = new DataGridViewComboBoxColumn(); table= new DataGridView { Data
DataSource=datatable()
和readonly=false
readonly
必须为false,因为还有其他可以编辑的列。如何使数据源中的所有列都为只读(不可编辑)
代码如下:
type = new DataGridViewComboBoxColumn();
table= new DataGridView
{
DataSource = datatable(), // this returns a DataTable object
AllowUserToAddRows = false,
AllowUserToDeleteRows = false,
RowHeadersVisible = false,
MultiSelect = false,
Name = "AgentTable",
AutoSize = true,
ReadOnly = false,
};
table.Columns.Add(CreateStartButton());
type.Items.Add(" some table");
type.ReadOnly = false;
table.Columns.Add(type);
编辑:
datagridview将包含4列
- 第一列,每个单元格都是一个按钮(只读不重要)
- 第二列,每个单元格都是一个下拉框(只读为false)
- 第三列和第四列创建为DataTable对象,因此(readonly必须为true)
所以我的问题是如何使第三列和第四列成为只读的?在创建完所有列之后,应该很容易迭代这些列。我会使用类似的东西,但我称之为伪代码,因为我不知道DataColumn是否是正确的数据类型:
foreach(DataColumn col in table.Columns) {
col.ReadOnly = true;
}
你的意思是:数据表中的列应该是只读的,而添加的列应该是可编辑的?@GertArnold:请参阅上面的编辑问题好的,如果你永远不打算更改结构,那么也许可以这样更改table.columns[2]和table.columns[3]。否则,在我的foreach循环中添加一个条件,根据要保持只读/可编辑的列名列表测试列名。
col.Table.Columns[4]。ReadOnly=true<代码>正在为对象实例提供未设置的异常对象引用。当表单加载时,列不是只读的。。。。列中的某些单元格为空白,其余单元格已填充。这会是个问题吗?