2009-12-01 23 views
2

我想评估绑定到中继器的当前DataItem,并在条件满足时将其从删除中添加。我原以为把e.Item.DataItem设置为Nothing就行,但事实并非如此。任何想法如何在特定条件满足时不将数据项添加到中继器?如何删除当前DataItem绑定到ASP.NET Repeater?

Protected Sub rpt_OnItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) 
    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then 
     If true Then 
      'don't add the current item 
      e.Item.DataItem = Nothing 
     Else 
      'add the current item 
     End If 
    End If 
End Sub 

回答

2

之前,您想要做的是过滤结果集,然后将其设置为DataSource您是否尝试将项目的可见性设置为False?

If true Then 
    //don't add the current item 
    e.Item.Visible = False 
Else 
    //add the current item 
End If 
1

你正在以错误的方式前进。在代码中的这一点上,一个项目已经被添加,并且你只是绑定(填充)它。在您拨打repeater.DataBindrepeater.DataBind

+0

不幸的是,这是行不通的,这是我真正想要做的。我想很难解释这种情况。但是我知道在ItemDataBound中做这样的事情已经太晚了。 – mccrager 2009-12-01 20:15:45

+0

在那种不幸的情况下,如果我有机会,我会将整个'ItemTemplate'包装在一个面板中,当感兴趣的条件满足时,我会将面板可见性设置为false。 – 2009-12-01 20:21:31

+0

当然,如果你使用'AlternatingItemTemplate',例如不同的背景颜色,那么这种方法会搞砸了。为了解决这个问题,你必须有一个外部计数器,其中包含目前实际可见的项目数量,并且基于'visibleItems%2 == 0'设置背景,但现在它真的开始变脏了。我希望这不是你的情况 – 2009-12-01 20:23:20

相关问题