#c# #data-binding #gridview #ienumerable
#c# #привязка данных #gridview #ienumerable
Вопрос:
Учитывая:
У меня есть класс:
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:
Ваш класс содержит поля, а не свойства; Вы должны определить свойства таким образом :
class MyObject
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}