ASPxGridView无法使用ReadOnly False编辑行

时间:2011-09-16 08:23:28

标签: c# asp.net aspxgridview

我目前正在使用aspx网站,其中我正在使用ASPxGridView控件。我可以按照我希望它出现的方式在GridView上显示数据。但是,当我单击“编辑”按钮(由控件本身在命令列下提供)时,会出现问题。单击所述按钮后,GridView会将该行更改为可编辑的行。但是,我无法更改文本框中的值。请注意,我已经在GridView的智能标记和xml源本身上将ReadOnly属性设置为false。

我尝试创建一个测试标志,只要ReadOnly属性设置为true,文本框的背景颜色就会变为蓝色。运行程序后,无论ReadOnly设置为true还是false,文本框都将显示为蓝色。

是否有任何其他属性可以帮助我使这些文本框可编辑?非常感谢!

干杯!

2 个答案:

答案 0 :(得分:5)

我今天遇到了同样的问题。如果您将数据源设置为匿名类型,则会出现此症状:

void BindDataGrid()
{
    var gridData = from cm in MyCollection
                   select new 
                   {
                       UniqueId = cm.UniqueId,
                       Min = cm.SomeNumber ?? 0,
                       Max = cm.SomeOtherNumber ?? 0,
                       Description = cm.Description
                   };

    this.myGrid.DataSource = gridData;
    this.myGrid.DataBind();
}

修复方法是为要使用的网格创建一个类。然后,它能够找出每个单元格的数据类型,并且它们在UI中变得可编辑:

public class MyGridViewModel
{
    public Guid UniqueId { get; set; }
    public int Min { get; set; }
    public int Max { get; set; }
    public string Description { get; set; }
}

void BindDataGrid()
{
    var gridData = from cm in MyCollection
                   select new MyGridViewModel()
                   {
                       UniqueId = cm.UniqueId,
                       Min = cm.SomeNumber ?? 0,
                       Max = cm.SomeOtherNumber ?? 0,
                       Description = cm.Description
                   };

    this.myGrid.DataSource = gridData;
    this.myGrid.DataBind();
}

答案 1 :(得分:0)

我错误地尝试编辑受保护的属性。如果属性具有公共getter和私有或受保护的setter,则它将在编辑表单中显示为只读字段。希望这对某人有所帮助。