我想在if语句中使用从SQL中提取的值。理想情况下,我想做相当于
<% If DataBinder.Eval(Container, "DataItem.BookID") == 1 Then%>
有没有办法用正确的语法做到这一点?
答案 0 :(得分:2)
这是你在aspx文件中放置条件的方法。根据我的理解,只是一个粗略的样本:
<%# System.Convert.ToInt32((DataBinder.Eval(Container.DataItem, "BookID")!="") ? DataBinder.Eval(Container.DataItem, "BookID"):0) %>
确保BookID中的int不是任何其他类型。
进一步解释:
如果您想要if else条件:
<%# If DataBinder.Eval(Container.DataItem, "DATAFIELD") <> "" Then
Response.Write("something")
End If %> // This is invalid
以上语句可以
<%# DataBinder.Eval(Container.DataItem, "DataField").Equals("")?"":"Something"%>
答案 1 :(得分:0)
我不确定这是否可以按你要求的方式完成。
正如您可能知道或不知道的那样,执行此操作的典型方法是在标记中设置控件,如此
<asp:listView ID="SophiesListView" ...
..
<ItemTemplate>
<asp:HyperLink ID="hlGlossary" title="click here for more information" target="_blank" runat="server" />
</ItemTemplate>
</asp:listView />
然后,在代码隐藏中,找到你的listview / repeater / datagrid或你有什么,并选择ItemDataBound。在这个活动中,做这样的事情:
If e.Item.DataItem("vehicleType") IsNot DBNull.Value AndAlso e.Item.DataItem("vehicleType") = "JETSKI" Then
DirectCast(e.Item.FindControl("hlGlossary"), HyperLink).NavigateUrl = "Glossary.aspx#JETSKI"
DirectCast(e.Item.FindControl("hlGlossary"), HyperLink).Text = "?"
End If
答案 2 :(得分:-1)
为了使页面逻辑尽可能简单,最好的办法是将数据绑定到控件的Visible属性。例如,如果你想只显示一些HTML,如果BookID == 1那么在你的数据源上创建一个新的属性,就像这样
public bool Show
{
get
{
return BookID == 1;
}
}
在你的页面中你有
<asp:Placeholder runat="server" Visible='<%# Eval("Show") %>'>
...html goes here...
</asp:Placeholder>