Я создал слайд-шоу. Каждый из слайдов имеет div, размещенный над ним. В div содержится текст. Я хочу сделать, если элемент h2
и p
не имеет текста, а затем спрятать div, который содержит их. Я попытался скрыть div от события повторителей DataBound, но он все еще показывает div над слайдом.скрывающий элемент div в коде за
Вот что я до сих пор:
ASPX:
<asp:Repeater ID="rptSlides" runat="server" ClientIDMode="Static" OnItemDataBound="rptSlides_ItemDataBound">
<ItemTemplate>
<div runat="server" id="slideDiv" class="slide">
<img runat="server" src='<%# Eval("slideImgPath")%>' />
<div id="slideTextdiv" runat="server" class="slideText">
<h2 id="titlePlaceHolder" runat="server" class="slideTitle text-center text-capitalize h2 ">
<%# Eval("slideTitle") %>
</h2>
<p id="textPlaceHolder" runat="server" class="slideDes">
<%# Eval("slideDesc") %>
</p>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
код позади:
protected void rptSlides_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
foreach (RepeaterItem item in rptSlides.Items)
{
HtmlGenericControl titleText = (HtmlGenericControl)item.FindControl("titlePlaceHolder");
HtmlGenericControl slidetextDesc = (HtmlGenericControl)item.FindControl("textPlaceHolder");
HtmlGenericControl slideDiv = (HtmlGenericControl)item.FindControl("slideTextdiv");
if (titleText.InnerText == "" && slidetextDesc.InnerText == "")
{
slideDiv.Style.Add("Display", "none");
}
}
}
Дополнительную информацию
Я также попытался следующие:
foreach (RepeaterItem item in rptSlides.Items)
{
HtmlGenericControl slideDiv = (HtmlGenericControl)FindControlRecursive(item, "slideTextdiv");
HtmlGenericControl titleText = (HtmlGenericControl)FindControlRecursive(item, "titlePlaceHolder");
HtmlGenericControl slidetextDesc = (HtmlGenericControl)FindControlRecursive(item, "textPlaceHolder");
if (string.IsNullOrWhiteSpace(titleText.InnerText) && string.IsNullOrWhiteSpace(slidetextDesc.InnerText))
{
slideDiv.Attributes["class"] = "emptySlideText";
}
}
Я создал класс в CSS под названием emptySlideText, например, так:
.emptySlideText {
display:none; }
Unfortunatley это не имело никакого эффекта.
Я также попытался изменить линию
slideDiv.Style.Add ("Дисплей", "ни один");
в
slideDiv.Attributes.Add ("стиль", "дисплей: нет");
Но опять же это не имеет никакого значения
Он по-прежнему показывает div, когда h2 и p пусты. –
@M_Griffiths - Хорошо, можете ли вы рассказать мне, какие значения вы передаете в 'slideTitle' и' slideDesc'? Я протестировал этот код, передав '' '' '' '' '', и он работает отлично для меня. –
он извлекает текст из базы данных, но не каждый слайд имеет текст для отображения, поскольку db допускает null в этих столбцах. Я не уверен, как привязка данных работает с нулевым значением. –