Свернуть не работает на моих картах DataList

#html #asp.net #bootstrap-4

#HTML #asp.net #bootstrap-4

Вопрос:

На моей странице у меня есть карточка примера и DataList.

Функция свертывания отлично работает на моей карточке примера, но я не могу заставить ее работать на моих реальных картах.

Вот код.

 <div class="resultadosEspecialidades">
    <asp:DataList ID="DataList_CredenciadosEs" OnItemDataBound="DataList2_ItemDataBound" runat="server" Style="width: 100%;">
        <ItemTemplate>
            <div class="card">
                <div class="card-body">
                    <h3 class="card-title"><%#Eval("NomeExibicao")%></h3>
                    <h6 class="card-subtitle mb-2 text-muted">Especialidade(s):</h6>
                    <p class="card-text"><%#Eval("BairrosExibicao") %></p>
                    <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#<%#Eval("PkCredenciado")%>">
                        Mais informações
                    </button>
                </div>

                <div class="collapse card-body show" id="<%#Eval("PkCredenciado")%>">
                    <h5>Endereços</h5>
                    <asp:Repeater ID="Repeater2" runat="server">
                        <ItemTemplate>
                            <div class="card-body">
                                <h6><%# DataBinder.Eval(Container.DataItem, "Logradouro") %>, <%# DataBinder.Eval(Container.DataItem, "Numero") %>, <%# DataBinder.Eval(Container.DataItem, "Complemento") %>, <%# DataBinder.Eval(Container.DataItem, "Bairro") %> - <%# DataBinder.Eval(Container.DataItem, "Municipio") %> - <%# DataBinder.Eval(Container.DataItem, "CEP") %></h6>
                                <div>
                                    <h6>(<%# DataBinder.Eval(Container.DataItem, "Telefones[0].DDD") %>)<%# DataBinder.Eval(Container.DataItem, "Telefones[0].Numero") %></h6>
                                </div>
                            </div>
                        </ItemTemplate>
                    </asp:Repeater>
                </div>
            </div>
        </ItemTemplate>
    </asp:DataList>
</div>
  

И вот пример карты, которая находится на той же странице

 <div class="resultadosEspecialidades">
    <asp:DataList ID="DataList_CredenciadosEs" OnItemDataBound="DataList2_ItemDataBound" runat="server" Style="width: 100%;">
        <ItemTemplate>
            <div class="card">
                <div class="card-body">
                    <h3 class="card-title"><%#Eval("NomeExibicao")%></h3>
                    <h6 class="card-subtitle mb-2 text-muted">Especialidade(s):</h6>
                    <p class="card-text"><%#Eval("BairrosExibicao") %></p>
                    <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#<%#Eval("PkCredenciado")%>">
                        Mais informações
                    </button>
                </div>

                <div class="collapse card-body show" id="<%#Eval("PkCredenciado")%>">
                    <h5>Endereços</h5>
                    <asp:Repeater ID="Repeater2" runat="server">
                        <ItemTemplate>
                            <div class="card-body">
                                <h6><%# DataBinder.Eval(Container.DataItem, "Logradouro") %>, <%# DataBinder.Eval(Container.DataItem, "Numero") %>, <%# DataBinder.Eval(Container.DataItem, "Complemento") %>, <%# DataBinder.Eval(Container.DataItem, "Bairro") %> - <%# DataBinder.Eval(Container.DataItem, "Municipio") %> - <%# DataBinder.Eval(Container.DataItem, "CEP") %></h6>
                                <div>
                                    <h6>(<%# DataBinder.Eval(Container.DataItem, "Telefones[0].DDD") %>)<%# DataBinder.Eval(Container.DataItem, "Telefones[0].Numero") %></h6>
                                </div>
                            </div>
                        </ItemTemplate>
                    </asp:Repeater>
                </div>
            </div>
        </ItemTemplate>
    </asp:DataList>
  

Карточка примера работает просто отлично, а html в Chrome предоставляет правильный идентификатор и целевую информацию для элементов с <%#Eval("PkCredenciado")%> .

Я не знаю, что я могу сделать, чтобы заставить это работать.

Комментарии:

1. Как насчет того, чтобы удалить show из класса, я имею в виду изменить class="collapse card-body show" на class="collapse card-body" ?

Ответ №1:

Проблема в том, что Eval("PkCredenciado") это, вероятно, целое число, поэтому идентификатор свернутого элемента становится примерно таким

 <div class="collapse" id="2048">
  

Но идентификатор не может начинаться с числа. Поэтому добавьте префикс к идентификатору

 <button class="btn btn-primary" data-target="#element_<%# Eval("PkCredenciado") %>"">
     Mais informações
</button>

<div class="collapse" id="element_<%# Eval("PkCredenciado") %>">
  

Комментарии:

1. Хм, я пробовал это w3schools.com/code/tryit.asp?filename=GIT8646IVYN3 но, похоже, он работает с целочисленным идентификатором.

2. @SelimYildiz, хм, это действительно работает. Но мне пришлось добавить префикс к коду Gabriel, чтобы заставить его работать.