3

ASP.NET 3.5で次のことをしようとしています。基本的に、LINQDataSource を DataList にバインドしています。「削除済み」というプロパティがあり、それが真なら別のマークアップを表示したい。次のコードはエラーをスローします。

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

これは可能ですか?そうでない場合、代替手段は何ですか?

4

4 に答える 4

11

コードフロントをスリムに保ち、関数の結果を介して目的のテキストを書き出すことをお勧めします。

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

コードビハインド:

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

    return "Not Deleted";
}

お役に立てば幸いです。

于 2009-07-10T17:11:21.933 に答える
5

回避策としての 1 つのオプションは、パネルを利用することです。

<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>
于 2008-11-05T06:05:10.000 に答える
1

RowDataBound イベントを使用して、フィールドの値を確認してみませんか? RowDatabound は、結果セットの値に基づいてグリッドビューのデータを変更する必要がある状況に最適です。

MSDN の RowDataBound イベント

于 2008-11-05T05:49:18.740 に答える
1

おそらく、データリストの ItemDataBound イベントを使用します。gridview の場合、結果セット内の他の値に基づいて値の表示を変更するのに理想的な rowdatabound イベントです。 ItemDataBound イベント

したがって、基本的に itemdatabound では、条件をいじることができます。繰り返しますが、これは経験に基づいた推測です。これは、通常、gridview の RowDataBound イベントでこれを行っているためです。

于 2008-11-05T05:55:29.240 に答える