3

如何仅为特定列启用编辑模式?

假设我有这些列:

Product Code || Quantity || Description || Price

我只想为Quantity列和Price列启用编辑模式。其余的无法编辑。

我已经在下面的代码中做了这个,但它似乎不起作用:

dataGridView1.EditMode = DataGridViewEditMode.EditOnKeystroke;
dataGridView1.Columns["Quantity"].ReadOnly = false;
dataGridView1.Columns["Price"].ReadOnly = false;

我所能做的就是禁用ReadOnlyfalse但它启用了我不想启用它们的所有列。

注意:当程序第一次运行时,我已经ReadOnlytrue

4

6 回答 6

3

开箱即用的解决方案是在您的数据模型上使用属性:

public class MyDataModel
{
    // Do not show in data grid view
    [System.ComponentModel.Browsable(false)]
    public virtual int ID { get; protected set; }

    // Set to read-only in data grid view
    [System.ComponentModel.ReadOnly(true)]
    public virtual string Person { get; set; }
}
于 2019-03-28T14:14:46.587 回答
1

您应该将 ReadOnly = true 设置为所有不可编辑的列。默认情况下,列设置为 ReadOnly = false

于 2013-09-17T12:01:02.593 回答
1

这会帮助你

MSDN DataGridViewColumn

于 2013-09-17T12:05:17.970 回答
0
foreach (DataGridViewColumn dc in dgvTestParameter.Columns)
        {
            if (dc.Index.Equals(0) || dc.Index.Equals(4))
            {
                dc.ReadOnly = false;
            }
            else
            {
                dc.ReadOnly = true;
            }
        }
于 2015-11-02T05:20:24.707 回答
0

从设计部分,您只需在 Datagridview 中选中“启用编辑”模式。这个例子可以帮助你,

在此处输入图像描述

我添加了两列作为只读目的(列名为“ReadOnly Column”),另一列作为可编辑列(列名为“Normal Column”)。

代码:

dataGridView1.Columns["readOnlyColumn"].ReadOnly = true;

谢谢....

于 2016-09-24T12:29:31.820 回答
0
int EditableCol_index = datagridview["colname"].index;

// if this is true , you wont be able to edit even you set the column readonly=false;
datagridview1.readonly = false;
foreach (datagridviewcolumns c in datagridview1 )
{
   c.readonly = true;
   if( c.index == EditableCol_index )
   { 
     c.readonly = false;  // editable
   }
}
于 2016-01-15T08:52:12.873 回答