我有一个简单的gridview ItemTemplate,如下所示:
<asp:TemplateField HeaderText="User">
<ItemTemplate>
<a href="mailto:<%# Eval("Email") %>"><%# Eval("Name") %></a>
</ItemTemplate>
</asp:TemplateField>
但是,并非此列表中的所有用户都有电子邮件存储在系统中,这意味着Eval(“电子邮件”)有时会返回空白。发生这种情况时,我宁愿在该字段上没有链接,因为如果没有电子邮件地址,mailto将无法运行。
我该怎么做?我希望我可以在演示代码中使用IF语句,就像经典的ASP一样。如果没有,我想我可以在我的数据源上创建一个包含整个HREF html的属性......
答案 0 :(得分:14)
您可以使用任何给定的公共函数代替Eval
。因此,您可以尝试执行以下操作:
<ItemTemplate>
<%# (String.IsNullOrEmpty(Eval("Email").ToString()) ? String.Empty : String.Format("<a href='mailto:{0}'>{1}</a>", Eval("Email"), Eval("Name")) %>
</ItemTemplate>
如果没有尝试过确切的语法,但我在我的一个页面中使用了类似的东西。
答案 1 :(得分:2)
<a <%# String.IsNullOrEmpty(EMail) ? String.Empty : "href=mailto:Eval('Email')" %> ><%# Eval("Name") %></a>
答案 2 :(得分:1)
C#.NET使用以下代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="50" />
<asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
<asp:TemplateField HeaderText="Status" ItemStyle-Width="100">
<ItemTemplate>
<asp:Label Text='<%# Eval("Status").ToString() == "A" ? "Absent" : "Present" %>'
runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
VB.NET使用以下代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="50" />
<asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
<asp:TemplateField HeaderText="Status" ItemStyle-Width="100">
<ItemTemplate>
<asp:Label Text='<%# If(Eval("Status").ToString() = "A", "Absent", "Present") %>'
runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
答案 3 :(得分:0)
<ItemTemplate>
<%# Eval("Type").ToString() == "2" ? "Page" : "Blog" %>
</ItemTemplate>
答案 4 :(得分:0)
您可以使用事件OnRowDataBound,或者如果您愿意,可以使用全局变量因为Binding是顺序的
像这样public int myvar;
public void SetMyVar(int i) {
myvar = i
}
并在网格视图中
<%# SetMyVar(DataBinder.Eval(Container.DataItem, "Day")) %>
<% if (myvar == 0) { %>
<%# Eval("Day") %>
<% } else { %>
<asp:HyperLink ID="hplDay" runat="server" NavigateUrl="" Target="_blank" Text='<%# Eval("Day") %>' />
<% } %>