我想使用表单视图显示学生成绩单。如果报告卡是第二学期的报告卡,则会有其他列,如果是第3学期,则会有2列。为了找出它是哪个术语,我需要评估TermNumber属性,并显示相应的标题。这是我的标记代码:
<% if ((int)Eval("TermNumber") == 2) %>
<% { %>
<th> 1st Term Score</th>
<% } %>
<% else if ((int)Eval("TermNumber") == 3) %>
<% { %>
<th> 1st Term Score</th>
<th> 2nd Term Score</th>
<% } %>
这会导致运行时错误:数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用。
这是因为Eval只能是&lt;%#%&gt;的一部分。标签
使用&lt;%#%&gt;导致编译时错误,VS13 intellisense表示无效术语。
我的问题是:我如何成功实现有条件地显示列的目标。我可以在数据绑定控件的标记中使用if Condition吗?或者是否有其他方法可以实现这一目标,而无需为每个术语创建单独的表单视图。
表单视图,还有一个转发器控件来显示主题分数,还需要使用if条件。
答案 0 :(得分:2)
所以我回答了我自己的问题。感谢Ruben接受的回答:eval in if statement?
<th runat="server" visible='<%# (int)Eval("TermNumber") > 1 %>'>1st Term Score</th>
<th runat="server" visible='<%# (int)Eval("TermNumber") > 2 %>'>2nd Term Score</th>
这也可以在中继器控制中没有任何问题。 由于runat =“Server”的Visible属性不包含任何标记,因此在最终输出中,它可以正常工作。并且if块的代码也更优雅。