Как связать класс со списком объектов как свойство повторителя? - PullRequest
0 голосов
/ 13 апреля 2020

У нас есть класс, который мы используем в ascx-странице, в повторителе:

Класс:


public class TestClass{
public int Id;
...

public int NumPeople {get;set};
public List<ReservationOccupancy> ReservationOccupancyList {get;set};

}

Заголовок:

<th id="tdNumPeople" runat="server">
    asp:Image ID="Image15" runat="server" CssClass="sortico" ImageUrl="/img/blank.gif" />
     <asp:LinkButton ID="LinkButton4" runat="server" CommandName="NumPeople" Text="# of Guests "></asp:LinkButton></th>
      <th id="tdSource" runat="server">
      <asp:Image ID="Image16" runat="server" CssClass="sortico" ImageUrl="/img/blank.gif" />
       <asp:LinkButton ID="LinkButton5" runat="server" CommandName="Source" Text="Source "></asp:LinkButton></th>

        <% for (int i = 0; i < SOcolu.Length; i++)
        {
        %><th><%= SOcolu[i] %></th>
        <%   } %>

ItemTemplate:

<td><%#Eval("NumPeople") %></td>
   <td>
     <asp:Label ID="lblSource" runat="server"></asp:Label>
    </td>
  <td><%#(List<ReservationOccupancy>)DataBinder.Eval(Container.DataItem,"ReservationOccupancyList") %> 
    </td>

Мы используем Eval для его свойств, но также в классе у нас есть Список объектов:

public List<ReservationOccupancy> ReservationOccupancyList

Класс ReservationOccupancy:


public class ReservationOccupancy
{
        public string ColumnName;

        public int ColumnValue;
}

Мы хотим показать ретранслятор как это - например, у нас есть Список:

ReservationOccupancyList = new List<ReservationOccupancy>()
{
{ColomnName = "ColumnName1", ColumnValue = 1},
{ColomnName = "ColumnName2", ColumnValue = 2}
},
Id   NumPeople   ColumnName1   ColumnName2
5       3             1            2 

Мы можем показать / связать NumPeople, но когда мы пытаемся связать Список (например, с помощью datacontainer), мы получаем ссылку на обобщенный c коллекция в качестве значения в представлении.

1 Ответ

0 голосов
/ 13 апреля 2020

Попробуйте ссылаться на него как DataBinder.Eval (Container.DataItem, "ReservationOccupancyList [0] .ColumnValue") DataBinder.Eval (Container.DataItem, "ReservationOccupancyList [1] .ColumnValue") et c.

На этой странице https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.databinder.eval?view=netframework-4.8 Я нашел это объяснение:

"Путь перехода от объекта контейнера к значению свойства publi c, который будет помещен в свойство элемента управления bound. Это должна быть строка имен свойств или полей, разделенных точками, например, Tables [0] .DefaultView. [0] .Price "

. Мне кажется, что вы должны указать DataBinder.Eval путь через список в указанное поле c, потому что он не может просто отобразить список.

Надеюсь, это поможет или, по крайней мере, направит вас в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...