在.net的绑定事件中使用if控制语句

做项目中经常会遇到的一个问题,在Repeater中绑定了某个数据源,需要对某个值做判断来选择页面要显示的内容,一个表中有多个值,每个值不同,显示结果也不同,这就需要用if语句来做判断了。

但是在外部可以用的if语句在判断Repeater绑定值的时候会出现问题,当然如果内容代码少的情况下我们可以用 三目算法判断,这个是可以的,例子如下: a==b?a:b;

但是当显示内同代码很多行的时候,这就不可取了,其实我们完全可以使用.net服务器组件的特性来完成我们的操作,在Repeater的显示内容的容器中(如:<table>,<tr>,<div>等)定义一个ID,并设置为服务器组件属性:runat="server"

再在Repeater绑定事件中判断该容器是否显示,事例代码如下:

前台:

<asp:Repeater ID="Repeater1" runat="server"
onitemcreated="Repeater1_ItemCreated">
<ItemTemplate>
<tr id="depth2" runat="server">
<td align="left" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" background="img/menu_bg3.gif" class="menuB">
<tr>
<td><a href="news_list.aspx?classId=<%#Eval("id")%>"><%#Eval("className") %></a></td>
</tr>
</table></td>
</tr>
<tr id="depth" runat="server">
<td background='<%# (Eval("id").ToString() ==classId || Eval("id").ToString()==perentId)?"img/menu_bj1.gif":"img/menu_bj5.gif"%>'><a href="<%#Eval("otherLink").ToString()==""?"news_list.aspx?classId="+Eval("id"):Eval("otherLink") %>" class="<%#(Eval("id").ToString()==classId || Eval("id").ToString()==perentId)?"STYLE3":""%>"><%#Eval("className") %></a></td>
</tr>
</ItemTemplate>
</asp:Repeater>



后台代码如下:

protected void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (e.Item.DataItem != null)
{
if (((DataRowView)e.Item.DataItem).Row["depth"].ToString() == "2")
{
e.Item.FindControl("depth").Visible = false;
e.Item.FindControl("depth2").Visible = true;
}
else
{
e.Item.FindControl("depth").Visible = true;
e.Item.FindControl("depth2").Visible = false;
}
}

}



如此,我们就可以实现完美控制前台的内容显示,而不需要写太多的繁琐代码,代码看起来也不是很凌乱,在例子中我还用了三目算法做样式的判断,基本上的功能都在这里面了,挖个坑先埋着,说不定以后忘了还可以回来看下0 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值