我有这段代码我想在不使用属性的情况下将数据绑定到网格视图。
public class UserTerritory
{
public string TerrId;
public string TerrName;
public string AccAccessLevel;
public UserTerritory(string _TerrId, string _TerrName, string _AccAccessLevel)
{
this.TerrId = _TerrId;
this.TerrName = _TerrName;
this.AccAccessLevel= _AccAccessLevel;
}
}
protected void Page_Load(object sender, EventArgs e)
{
List<UserTerritory> ut = new List<UserTerritory>();
ut.Add(new UserTerritory("1", "x", "a"));
ut.Add(new UserTerritory("2", "y", "b"));
ut.Add(new UserTerritory("3", "z", "c"));
grdUserTerr.DataSource = ut;
grdUserTerr.DataBind();
}
当我执行上面的代码时,我得到了Httpexception“具有id'grdUserTerr'的GridView的数据源没有任何属性或属性来生成列。请确保您的数据源有内容。”
有人能告诉我我在做什么错吗?
感谢您的回复
答案 0 :(得分:1)
问题是数据绑定在幕后使用DataBinder.Eval(或者只是Eval) 只看属性。它们与公共成员(字段)不完全相同。属性比字段更接近方法。
那么你为什么不只使用这样的属性?
public string AccAccessLevel { get; set; }
public string TerrName { get; set; }
public string TerrId { get; set; }
答案 1 :(得分:-1)
在属性声明部分有些问题请将属性更改为私有成员,它将适合您。
public class UserTerritory
{
private string TerrId;
private string TerrName;
private string AccAccessLevel;
public UserTerritory(string _TerrId, string _TerrName, string _AccAccessLevel)
{
this.TerrId = _TerrId;
this.TerrName = _TerrName;
this.AccAccessLevel= _AccAccessLevel;
}
}