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

一种解决方法是使用面板。

<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 上你可以玩弄你的条件。同样,这是一个有根据的猜测,因为我通常使用 gridview 上的 RowDataBound 事件来完成此操作。

于 2008-11-05T05:55:29.240 回答