我试图在ASP.NET 3.5中执行以下操作。基本上,我将LINQDataSource绑定到DataList。有一个名为“Deleted”的属性,如果是,我想显示不同的标记。以下代码引发错误:
<asp:DataList runat="server">
<ItemTemplate>
<% If CBool(Eval("Deleted")) Then%>
...
<% Else%>
...
<% End If%>
</ItemTemplate>
</asp:DataList>
这可能吗?如果没有,有哪些替代方案?
答案 0 :(得分:10)
我可能会建议保持代码前端精简并通过函数结果写出所需的文本:
<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";
}
我希望它有所帮助。
答案 1 :(得分: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>
答案 2 :(得分:1)
为什么不直接使用RowDataBound事件并检查字段的值呢? RowDatabound非常适合您希望根据结果集中的值更改网格视图中的数据的情况。
答案 3 :(得分:1)
也许使用datalist的ItemDataBound事件。对于gridview,它的rowdatabound事件非常适合根据结果集中的其他值更改值的显示。 ItemDataBound event
所以基本上在itemdatabound上你可以玩你的条件。同样,这是一个有根据的猜测,因为我通常使用gridview的RowDataBound事件完成此操作。