如何将嵌套的Repeater绑定到objectdatasource

时间:2016-03-16 15:27:21

标签: c# asp.net

我是ASP.net的全新新手

我的数据库模型在这里

enter image description here

如上图所示,我有一张表,它的名字是Tours,它有一个名为TourId的列。

我的Webform中有一个对象数据源,下面的代码是转发器:

<asp:ObjectDataSource ID="ODSTTitle" runat="server" SelectMethod="GetById" TypeName="ATourRep">
            <SelectParameters>
                <asp:QueryStringParameter DefaultValue="0" Name="Id" QueryStringField="CID" Type="Int32" />
            </SelectParameters>
        </asp:ObjectDataSource>

            <asp:ObjectDataSource ID="ObjectDataSource1" runat="server">
            </asp:ObjectDataSource>


<div class="container" id="TourDetail">

            <asp:Repeater ID="RptTourDetail" runat="server" DataSourceID="ODSTTitle" ItemType="Tour" EnableViewState="false">

                <ItemTemplate>
                    <li>

                        <div class="row">



                            <div class="col-md-3">
                                  <%-- NestedRepeater --%>

                                <asp:Repeater ItemType="TourDate" ID="RptTourNested" runat="server" EnableViewState="false">
                                    <ItemTemplate>
                                        <h2>
                                                                                                       <%-- What Should I write Here to have a list of each TourDate --%>

                                        </h2>
                                    </ItemTemplate>
                                </asp:Repeater>
                            </div>

                     <%-- This div works correctly --%>
                            <div class="col-md-6">
                                <h4>
                                    <%# Item.TName %>
                                </h4>
                                <p>
                                    <%# Item.TDes %>
                                </p>
                            </div>



                        </div>

                    </li>

                </ItemTemplate>

            </asp:Repeater>

        </div>

As代码显示有一个嵌套的转发器,它有h2标签。我需要在h2标签中显示每个TourDates的列表。

我不知道如何绑定ObjectDataSource1以使用每个Tour的TourId,然后获取该巡视的StartDates。以及我应该在嵌套转发器的h2标签中写什么来显示该巡视的satrtdates ((每次巡演都有不止一个开始日期))

我在我的存储库中也有这个方法

 public IQueryable<TourDate> GetById(int Id)
{
    return model.TourDates.Where(e => e.TourId == Id);
}

我使用了ObjectDataSource的默认值,然后通过eval绑定它,但它起作用了。

你有什么建议或者我在结构方面是错的,或者你认为那里有嵌套的中继器吗?

2 个答案:

答案 0 :(得分:1)

在父转发器中,您需要实现此处https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound%28v=vs.110%29.aspx指定的Repeater.ItemDataBound事件,然后在该事件内,您需要为每个项目(行)获取所需信息并将数据源发送到内部Repeater,然后调用其数据绑定功能。

答案 1 :(得分:1)