Domanda

Sto provando a fare quanto segue in ASP.NET 3.5. Fondamentalmente, sto associando un LINQDataSource a un DataList. C'è una proprietà chiamata " Deleted " e se è vero, voglio visualizzare markup diversi. Il codice seguente genera errori:

<asp:DataList runat="server">
    <ItemTemplate>
        <% If CBool(Eval("Deleted")) Then%> 
            ...
        <% Else%>
            ...
        <% End If%>
    </ItemTemplate>
</asp:DataList>

È possibile? In caso contrario, quali sono le alternative?

È stato utile?

Soluzione

Perché non usare semplicemente l'evento RowDataBound e controllare il valore dei tuoi campi? RowDatabound è ideale per queste situazioni in cui si desidera modificare i dati in una visualizzazione griglia in base ai valori nel set di risultati.

Evento RowDataBound da MSDN

Altri suggerimenti

Potrei suggerire di mantenere il code-lean snello e scrivere il testo desiderato tramite un risultato di funzione:

<asp:DataList runat="server">
    <ItemTemplate>
         <%# GetText(Container.DataItem) %>
    </ItemTemplate>
</asp:DataList>

E il code-behind:

protected static string GetText(object dataItem)
{        
    if (Convert.ToBoolean(DataBinder.Eval(dataItem, "Deleted"))
        return "Deleted";

    return "Not Deleted";
}

Spero che sia d'aiuto.

Un'opzione come soluzione alternativa sarebbe quella di utilizzare un pannello.

<asp:DataList runat="server">
    <ItemTemplate>
        <asp:Panel Visible="<%# Eval("Deleted") %>">
            ...(deleted content here)...
        </asp:Panel>
        <asp:Panel Visible="<%# Not Eval("Deleted") %>">
            ...(other content here)...
        </asp:Panel>
    </ItemTemplate>
</asp:DataList>

Forse usa l'evento ItemDataBound di un datalist. Per gridview è l'evento rowdatabound che è l'ideale per alterare la visualizzazione di valori basati su altri valori nel set di risultati. Evento ItemDataBound

Quindi, fondamentalmente sul database degli oggetti, puoi giocare con i tuoi condizionali. Ancora una volta, questa è un'ipotesi istruttiva poiché in genere l'ho fatto con l'evento RowDataBound su gridview.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top