Привязка данных списка к GridView.GridView не может найти мою собственность! - PullRequest
1 голос
/ 13 апреля 2011

Дано:

У меня есть класс:

class MyObject
{
  public string Field1;
  public string Field2;
}

и следующий код:

var list = SomeFunction(); // returns a valid List<MyObject>
gvMyList.DataSource = list;
gvMyList.DataBind(); // THIS THROWS AN EXCEPTION

И элемент управления GridView на странице aspx:

<asp:GridView ID="gvMyList" AutoGenerateColumns="false" runat="server">
  <Columns>
    <asp:TemplateField HeaderText="Field 1">
      <ItemTemplate>
        <asp:Label ID="lblCourse" runat="server" Text='<%# Eval("Field1") + " " + Eval("Field2") %>'></asp:Label>
      </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>

Проблема:

Итак, я знаю, что если что-то реализует IEnumerable, то это можно передать в свойство DataSource. Насколько я знаю, если вы передадите DataSource список, то у меня будет доступ к свойствам MyObject с помощью Eval("Field1") или Eval("Field2"). Это не тот случай, здесь. Вместо этого я получаю исключение:

DataBinding: 'MyObject' does not contain a property with the name 'Field1'.

1 Ответ

7 голосов
/ 14 апреля 2011

Ваш класс содержит Поля , а не Свойства ;Вы должны определить свойства следующим образом:

 class MyObject
    {
      public string Field1 { get; set; }
      public string Field2 { get; set; }
    }
...