如何在不使用属性的情况下在asp.net中的gridview中绑定数据

时间:2011-07-05 07:34:48

标签: asp.net gridview

我有这段代码我想在不使用属性的情况下将数据绑定到网格视图。

        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的数据源没有任何属性或属性来生成列。请确保您的数据源有内容。”

有人能告诉我我在做什么错吗?

感谢您的回复

2 个答案:

答案 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;
           }
        }