ASP.NET: условная логика в ItemTemplate ListView

Просто используйте это -

public DefaultHttpClient wrapClient(HttpClient base) {
    try {
        SSLContext ctx = SSLContext.getInstance("TLS");
        X509TrustManager tm = new X509TrustManager() {
        public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException { }

        public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { }

        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    };
    ctx.init(null, new TrustManager[]{tm}, null);
    SSLSocketFactory ssf = new SSLSocketFactory(ctx);
    ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    ClientConnectionManager ccm = base.getConnectionManager();
    SchemeRegistry sr = ccm.getSchemeRegistry();
    sr.register(new Scheme("https", ssf, 443));
    return new DefaultHttpClient(ccm, base.getParams());
} catch (Exception ex) {
    return null;
}
}
25
задан Andreas Grech 5 July 2009 в 10:46
поделиться

2 ответа

А как насчет привязки свойства «Visible» элемента управления к вашему условию? Примерно так:

<asp:ListView ID="MusicList" runat="server">
   <ItemTemplate>
    <tr runat="server" Visible='<%# Eval("DownloadLink") != null %>'>
        <td>
            <a href='<%#Eval("DownloadLink") %>'>Link</a>
        </td>
    </tr>
   </ItemTemplate>
</asp:ListView>
37
ответ дан 28 November 2019 в 20:43
поделиться

Я'Я не рекомендую это как хороший подход, но вы можете обойти эту проблему, зафиксировав текущий элемент в событии OnItemDataBound, сохранив его в общедоступном свойстве или поле и затем используя его в своей условной логике.

Например:

<asp:ListView ID="MusicList" OnItemDataBound="Item_DataBound" runat="server">
    <ItemTemplate>
        <tr>
            <%
                if (CurrentItem.DownloadLink != null)
                {
            %>
            <td>
                <a href="<%#Eval("DownloadLink") %>">Link</a>
            </td>
            <%
                } %>
        </tr>
    </ItemTemplate>
</asp:ListView>

] А на стороне сервера добавьте следующий код в свой код позади файла:

public MusicItem CurrentItem { get; private set;}

protected void Item_DataBound(object sender, RepeaterItemEventArgs e)
{
   CurrentItem = (MusicItem) e.Item.DataItem;
}

Обратите внимание, что этот трюк не будет работать в элементе управления UpdatePanel .

6
ответ дан 28 November 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: