2

我想在 if 语句中使用从 SQL 中提取的值。理想情况下,我想做相当于

<% If DataBinder.Eval(Container, "DataItem.BookID") == 1 Then%>

有没有办法用正确的语法做到这一点?

4

3 回答 3

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 

上面的语句可以正确地写在 aspx 文件中,如下所示:

<%# DataBinder.Eval(Container.DataItem, "DataField").Equals("")?"":"Something"%>
于 2012-06-20T10:59:24.173 回答
0

我不确定这是否可以按照您要求的方式完成。

您可能知道也可能不知道,执行此操作的典型方法是在您的标记中进行控制,就像这样

<asp:listView ID="SophiesListView" ...
..
<ItemTemplate>
<asp:HyperLink ID="hlGlossary" title="click here for more information" target="_blank" runat="server" />
</ItemTemplate>
</asp:listView />

然后,在代码隐藏中,找到您的列表视图/中继器/数据网格或您有什么并选择 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
于 2012-06-29T02:22:16.103 回答
-1

为了使您的页面逻辑尽可能简单,最好的办法是将数据绑定到控件的 Visible 属性。例如,如果您只想在 BookID == 1 的情况下显示一些 html,则在您的数据源上创建一个新属性,如下所示

public bool Show
{
     get
     {
         return BookID == 1;
     }
}

在您的页面中,您将拥有

<asp:Placeholder runat="server" Visible='<%# Eval("Show") %>'>
    ...html goes here...
</asp:Placeholder>
于 2012-06-20T13:05:46.780 回答