繁体   English   中英

如何将 class 与对象列表作为属性绑定到中继器?

[英]How to bind class with List of Objects as property to repeater?

我们有 class 我们在 ascx-page 中使用,在转发器中:

Class:


public class TestClass{
public int Id;
...

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

}

Header:

<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>
        <%   } %>

项目模板:

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

我们使用 Eval 作为它的属性,但在 class 中,我们有 Object 的列表:

public List<ReservationOccupancy> ReservationOccupancyList

预订入住人数class:


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,但是当我们尝试绑定 List(例如,使用 datacontainer)时,我们会引用一个通用集合作为视图中的值。

尝试将其引用为 DataBinder.Eval(Container.DataItem,"ReservationOccupancyList[0].ColumnValue") DataBinder.Eval(Container.DataItem,"ReservationOccupancyList[1].ColumnValue") 等。

在此页面https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.databinder.eval?view=netframework-4.8我找到了这个解释:

"从容器 object 到要放置在绑定控件属性中的公共属性值的导航路径。这必须是由句点分隔的属性或字段名称的字符串,例如 Tables[0].DefaultView.[0].Price "

在我看来,您必须为 DataBinder.Eval 提供通过列表到特定字段的路径,因为它不能只呈现列表。

希望这会有所帮助,或者至少可以让您指出正确的方向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM