리피터를 사용하여 nested collection
을 바인딩했습니다. 기본적으로 내가하고있는 일은 웹 페이지의 모든 요소 & 값을 표시하는 것입니다.리피터가 직렬화 가능한 DataStructures를 효율적으로 바인딩 할 수 있습니까
, 중첩 된 리피터를 사용하고 (아래 코드를 참조하시기 바랍니다)
각 &에 대한 모든 항목과 바인딩 컨트롤을 만들 수있는 사본 & 붙여 넣기 작업의 많은입니다 current ItemDataBount Event
에 a level below
리피터 데이터 소스를 결합하는 것을 데이터는 Eval
을 사용합니다.
DataSource is serializable
이라는 사실을 고려하면이 효율적인 &은 Nested Collections를 바인딩하는 가장 간단한 방법입니까?
<asp:Repeater ID="rpt1" OnItemDataBound="rpt1_ItemDataBound" runat="server">
<ItemTemplate>
<asp:Label ID="lblSomeProperty" Text='<%#Eval("SomeProperty") %>' runat="server" />
<%--few other controls--%>
<asp:Repeater ID="rpt2"OnItemDataBound="rpt2_ItemDataBound" runat="server">
<ItemTemplate>
<asp:Label ID="Label1" Text='<%#Eval("SomeOtherProperty") %>' runat="server" />
<asp:Repeater ID="rpt3" runat="server">
<ItemTemplate>
<asp:Label ID="Label1" Text='<%#Eval("SomeMoreProperty") %>' runat="server" />
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
코드 숨김 :
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
rpt1.DataSource = //RootElement IEnumerable
}
}
protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
//proceed only if ItemTemplate OR AlternatingItemTemplate
//populate user control values from DataItem in current context
var rpt2 = e.Item.FindControl("rpt2") as Repeater;
rpt2.DataSource = //Child Level1 IEnumerable
}
protected void rpt2_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
//bind rpt3 DataSource
}
당신의 도움에 감사드립니다.