Как связать данные в gridview в asp.net без использования свойств - PullRequest
2 голосов
/ 05 июля 2011

У меня есть этот код, я хочу привязать данные к представлению сетки без использования свойств.

        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 "Источник данных для GridView с идентификатором 'grdUserTerr' сделалУ меня нет свойств или атрибутов для создания столбцов. Убедитесь, что в вашем источнике данных есть содержимое. "

Может кто-нибудь сказать мне, что я делаю неправильно?

Спасибо за ваш ответ

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Проблема в том, что привязка данных использует DataBinder.Eval (или просто Eval) за кулисами и ищет только свойства.Они не совсем такие же, как публичные члены (поля).Свойства ближе к методам, чем поля.

Так почему бы вам просто не использовать такие свойства?

public string AccAccessLevel { get; set; }    
public string TerrName  { get; set; }    
public string TerrId { get; set; }
0 голосов
/ 05 июля 2011

Существует проблема, когда в разделе декалирования свойств измените свойства как личный, он будет работать для вас.

 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;
           }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...