我在.aspx页面上有一个listview控件。在此列表视图中,我想检查来自数据库的“类型”属性。这是示例代码:
<ItemTemplate>
<%# if(Convert.ToInt32(DataBinder.Eval(Container.DataItem,"Type")) == 0){ %>
<tr class="item">
<td>
<%# Convert.ToDateTime(Eval("WorkDate")).ToShortDateString() %>
</td>
<td style="text-align: center;">
<%# Eval("SkillName") %>
</td>
</tr>
<%# } else if (Convert.ToInt32(DataBinder.Eval(Container.DataItem,"Type")) == 1) {%>
<tr class="item">
<td colspan="2">
<strong><%# Convert.ToDateTime(Eval("WorkDate")).ToShortDateString() %></strong>
</td>
</tr>
<% } %>
</ItemTemplate>
作为最后的手段我尝试使用DataBinder.Eval(),但我得到异常“预期的类,委托,枚举,接口或结构”。我能做错什么?在代码隐藏中编写函数不是我的选择。有没有办法实现这个目标?
答案 0 :(得分:4)
这是完整的代码,非常简洁。
<ItemTemplate>
<tr class="item">
<td colspan="<%# Eval(Container.DataItem,"Type")) == 0 ? 1:2%>">
<strong><%# Convert.ToDateTime(Eval("WorkDate")).ToShortDateString() %></strong>
</td>
<td style="text-align: center;" visible="<%# Eval(Container.DataItem,"Type")) == 1>">
<%# Eval("SkillName") %>
</td>
</tr>
</ItemTemplate>
答案 1 :(得分:2)
未经测试,因为我目前没有Visual Studio,但由于HtmlTableRow具有Visible
属性,因此以下内容应该有效:
<tr class="item" runat="server" Visible='<%# Convert.ToInt32(Eval("Type")) == 0 %>'>
...
</tr>
答案 2 :(得分:0)
是的,你将不得不做一些客户端脚本虽然...我建议jquery ..
你基本上会循环遍历jquery中的所有行,并根据行中的数据,你可以根据“.item”选择器更改行对象的innerhtml,以确定它是否应该在一个格式或其他。