Reshma Tv Ответов: 0

Управление вложенным ретранслятором в ASP.NET


I have a nested repeater control with multiple views. Here the parent repeater is bound to a datatable. When we click on the div in parent repeater, child repeaters will be displayed in a dropdown box. But I'm getting same instance of child repeaters in all views of parent repeater. Please help me to resolve the issue. 


Что я уже пробовал:

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
                            <ItemTemplate>
                                <div class="row row-border pb-1 pt-1 border-bottom border-dark dropdown-toggle" data-toggle="dropdown">
                                    <div class="col-md-2">
                                        <asp:Label ID="LabelDate" runat="server" Text='<%# Eval("id") %>'></asp:Label>
                                    </div>
                                    <div class="col-md-2">
                                        <asp:Label ID="Label1" runat="server" Text="Test 1"></asp:Label>
                                    </div>
                                    <div class="col-md-2">
                                        <asp:Label ID="Label2" runat="server" Text="Test 2"></asp:Label>
                                    </div>
                                    <div class="col-md-2">
                                        <asp:Label ID="Label3" runat="server" Text="Test 3"></asp:Label>
                                    </div>
                                    <div class="col-md-2">
                                        <asp:Label ID="Label4" runat="server" Text="Test 4"></asp:Label>
                                    </div>
                                </div>
                                <div class="dropdown-menu dropdown-menu-right">
                                    <div class="row">
                                        <div class="col-md-12">
                                            Header 
                                        </div>
                                        <div class="col-md-6">
                                            <asp:Repeater ID="Repeater2" runat="server">
                                                <ItemTemplate>
                                                    <div class="row">
                                                     <div class="col-md-12">
                                                         <%# Container.DataItem?.ToString() ?? string.Empty%>
                                                     </div>
                                                </div>
                                                </ItemTemplate>
                                            </asp:Repeater>
                                        </div>
                                        <div class="col-md-6">
                                            <asp:Repeater ID="Repeater3" runat="server">
                                                <ItemTemplate>
                                                    <div class="row">
                                                     <div class="col-md-12">
                                                         <%# Container.DataItem?.ToString() ?? string.Empty%>
                                                     </div>
                                                </div>
                                                </ItemTemplate>
                                            </asp:Repeater>
                                        </div>
                                    </div>
                                </div>
                            </ItemTemplate>
                        </asp:Repeater>



Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
       {
           ...
           var Temp1= new List<string>();
           var Temp2= new List<string>();
           ...

           Repeater Rptr2 = (e.Item.FindControl("Repeater2") as Repeater);
           Repeater Rptr3 = (e.Item.FindControl("Repeater3") as Repeater);
           Rptr2.DataSource = Temp1;
           Rptr3.DataSource = Temp2;
           Rptr2.DataBind();
           Rptr3.DataBind();
       }

F-ES Sitecore

Вы получаете те же самые данные, что и при привязке Repeater2 и Repeater3 к тем же данным, что и код в Repeater1_ItemDataBound, не изменяющийся в зависимости от родительской строки.

Reshma Tv

Да.. Во время отладки я проверил и подтвердил, что правильные значения привязаны к дочерним повторителям. Но в выпадающем списке (когда я нажимаю на div в Родительском ретрансляторе) первое значение , привязанное к дочерним ретрансляторам, отображается во всех представлениях родительского ретранслятора.

Приведенный ниже код javascript используется для отображения выпадающего списка.


$(документ).готово(функция () {
$('.выпадающего-включить).выпадающий();
});

F-ES Sitecore

Используйте view->source для проверки исходного html-кода. Если правильные данные находятся в источнике, то проблема заключается в вашей "выпадающей" функции\css-классах.

Reshma Tv

Да.. Данные принимаются правильно в источнике.

F-ES Sitecore

Что же тогда представляет собой функция "dropdown ()"? Откуда это взялось?

Reshma Tv

Здесь я использую bootstrap 4 toggleable menu в качестве выпадающего списка и вызываю их через javascript.


$(документ).готово(функция () {
$('.выпадающего-включить).выпадающий();
});


Также включены ниже Css и JS файлы.

https://code.jquery.com/jquery-3.5.1.min.js
https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js
https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js
https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css
https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css

0 Ответов