我目前正在使用aspx网站,其中我正在使用ASPxGridView控件。我可以按照我希望它出现的方式在GridView上显示数据。但是,当我单击“编辑”按钮(由控件本身在命令列下提供)时,会出现问题。单击所述按钮后,GridView会将该行更改为可编辑的行。但是,我无法更改文本框中的值。请注意,我已经在GridView的智能标记和xml源本身上将ReadOnly属性设置为false。
我尝试创建一个测试标志,只要ReadOnly属性设置为true,文本框的背景颜色就会变为蓝色。运行程序后,无论ReadOnly设置为true还是false,文本框都将显示为蓝色。
是否有任何其他属性可以帮助我使这些文本框可编辑?非常感谢!
干杯!
答案 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,则它将在编辑表单中显示为只读字段。希望这对某人有所帮助。