0

我正在使用.Net 4.5,模型绑定,目前有一个转发器,其中包含另一个转发器。

    <asp:Repeater ID="rptADivisions" runat="server" ItemType="abc.Division" SelectMethod="rptADivisions_GetData">
    <ItemTemplate>
        <div>
            <%#: Item.DivisionName %>
            <asp:Repeater ID="rptDOfficials" runat="server" ItemType="abc.DOfficial" SelectMethod="rptDOfficials_GetData">
                <ItemTemplate>
                    <blockquote>
                        <p><%#: Item.FullName %></p>
                        <small><%#: Item.Position %></small>
                    </blockquote>
                </ItemTemplate>
            </asp:Repeater>
            <hr />
        </div>
    </ItemTemplate>
</asp:Repeater>

我能够填充第一个中继器(rptADivisions),但我如何让第二个中继器工作?我需要让第二个访问 Did,它包含在顶部转发器 (rptADivisions) 项目 (abc.Divison) 中。我尝试将第二个中继器的 SelectMethod 设置为

public IEnumerable<abc.DOfficial> rptDOfficials_GetData([Control("rptADivisions")] string DidFilter)

但这似乎不起作用,DidFilter 总是设置为空。

4

1 回答 1

0

我手头没有 VS,但是中继器,像大多数数据绑定控件一样,应该有类似 DataBound 或 RowDataBound 事件的东西,当一行从数据源绑定到它的对应物时,你可以挂钩并能够执行一些代码。

在这种情况下,您应该能够编写 c# 代码来访问中继器 (FindControl("rptDofficials")) 并获取您实际绑定到的项目。拥有这两个将允许您构建一组项目并通过调用以声明方式绑定

.DataSource = your set of items
.DataBind()

至少这是你做嵌套数据网格、列表视图的方式,我希望这也适用于转发器。

于 2013-05-08T20:00:56.327 回答