Если условие в ASP.NET Repeater - PullRequest
1 голос
/ 14 марта 2011

У меня возникли некоторые проблемы с моим элементом управления ASP.NET Repeater.Мне нужно показать HTML-код в зависимости от логического свойства объекта в коллекции, с которой связан репитер.

У меня есть этот код:

<asp:Repeater ID="rptListPartners" runat="server" OnItemDataBound="rptListPartners_ItemDataBound">
<HeaderTemplate>
<table border="0" cellpadding="7" cellspacing="0">
</HeaderTemplate>
<ItemTemplate>  
    <tr>
        <td style="font-family:Verdana; font-size:11px; height: 18px; width:370px;">
        <div id="data_tooltip_from_div<%#Eval("id") %>" style="display:none; z-index:10;"><%#Eval("profile") %></div>

            <a id="tooltip_from_div<%#Eval("id") %>" href='<%#Eval("homepage") %>' class="tooltip" target="_blank"> 
                <div style="float:left;"><%#Eval("name") %>, <%#Eval("address") %>, <%#Eval("zip") %> <%#Eval("city") %>&nbsp;</div>
                <div style="width:18px; float:left;">  
                    <asp:Panel Width="18px" ID="pnlLink" runat="server" Visible='<%#Eval("IsUrl") %>'>
                        <a href='<%#Eval("homepage") %>' target="_blank">
                            <img src='/kort/www.png' />
                        </a>
                    </asp:Panel>
                </div>
            </a>

        </td>
        <td style="font-family:Verdana; font-size:11px; height: 18px;">Tlf. <%#Eval("phone") %></td>                
    </tr>
</ItemTemplate>
<FooterTemplate>
    </table>
</FooterTemplate>

Мне нужно отобразить тег

<a id="tooltip_from_div<%#Eval("id") %>" .... >

</a>

с тегом span или div, если значение <% # Eval ("IsUrl")%> равно false - таким образом, не отображается ссылка, если на строке URL нет строкиобъект.

Как именно я об этом?Любая помощь / подсказка очень ценится!: -)

Всего наилучшего,

Бо

Ответы [ 2 ]

3 голосов
/ 14 марта 2011

Вы можете попробовать разместить теги a и div, а затем установить свойство Visible в соответствии с вашими условиями.

Простой, легкий, умный

2 голосов
/ 14 марта 2011

Хм, я решил это сам, выполнив следующее:

На странице .aspx я вызываю метод для записи html:

<asp:Repeater ID="rptListPartners" runat="server" OnItemDataBound="rptListPartners_ItemDataBound">
<HeaderTemplate>
<table border="0" cellpadding="7" cellspacing="0">
</HeaderTemplate>
<ItemTemplate>  
    <tr>
        <td style="font-family:Verdana; font-size:11px; height: 18px; width:370px;">
        <div id="data_tooltip_from_div<%#Eval("id") %>" style="display:none; z-index:10;"><%#Eval("profile") %></div>
            <%# CheckUrl(DataBinder.Eval(Container.DataItem, "IsUrl"), 
                         DataBinder.Eval(Container.DataItem, "id"),
                         DataBinder.Eval(Container.DataItem, "homepage"),
                         DataBinder.Eval(Container.DataItem, "name"),
                         DataBinder.Eval(Container.DataItem, "address"),
                         DataBinder.Eval(Container.DataItem, "zip"),
                         DataBinder.Eval(Container.DataItem, "city"))   
            %>
        </td>
        <td style="font-family:Verdana; font-size:11px; height: 18px;">Tlf. <%#Eval("phone") %></td>                
    </tr>
</ItemTemplate>
<FooterTemplate>
    </table>
</FooterTemplate>
</asp:Repeater>

Затем в моем коде:

public string CheckUrl(object isUrl, object id, object homepage, object name, object address, object zip, object city)
{
    string html = string.Empty;
    if (isUrl != null)
    {
        string _id = id.ToString();
        string _homepage = homepage.ToString();
        string _name = name.ToString();
        string _address = address.ToString();
        string _zip = zip.ToString();
        string _city = city.ToString();

        if (isUrl.ToString().Equals("True"))
        {
            html = "<a id='tooltip_from_div" + _id + "' href='" + _homepage + "' class='tooltip' target='_blank'>"
                + "<div style='float:left;'>" + _name + ", " + _address + ", " + _zip + " " + _city + "&nbsp;</div>"
                + "<div style='width:18px; float:left;'>  "
                + "    <asp:Panel Width='18px' ID='pnlLink' runat='server' Visible='" + isUrl.ToString() + "'>"
                + "     <a href='" + _homepage + "' target='_blank'>"
                + "         <img src='/kort/www.png' />"
                + "        </a>"
                + "    </asp:Panel>"
                + "</div>"
            + "</a>";
        }
        else
        {
            html = "<span id='tooltip_from_div" + _id + "' class='tooltip' target='_blank'>"
                + "<div style='float:left;'>" + _name + ", " + _address + ", " + _zip + " " + _city + "&nbsp;</div>"
                + "</span>";
        }
    }

    return html;
}

Работает как шарм: -)

djechelon: Я попробовал ваше предложение, но я просто не мог заставить его работать со всем происходящим javascript и так далее: -(Извините ..

...