仅在某个列c#的datagridview中启用编辑模式

时间:2013-09-17 11:54:36

标签: c# ms-access datagridview

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

假设我有这些专栏:

Product Code || Quantity || Description || Price

我想仅为Quantity列和Price列启用编辑模式。其余部分无法编辑。

我已在下面的代码中执行了此操作,但似乎无效:

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

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

注意:当程序第一次运行时,我已将ReadOnly设置为true

6 个答案:

答案 0 :(得分: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; }
}

答案 1 :(得分:1)

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

答案 2 :(得分:1)

这会对你有所帮助

MSDN DataGridViewColumn

答案 3 :(得分:0)

foreach (DataGridViewColumn dc in dgvTestParameter.Columns)
        {
            if (dc.Index.Equals(0) || dc.Index.Equals(4))
            {
                dc.ReadOnly = false;
            }
            else
            {
                dc.ReadOnly = true;
            }
        }

答案 4 :(得分: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
   }
}

答案 5 :(得分:0)

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

enter image description here

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

代码:

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

谢谢....