如何在ASP.NET DataRepeater控件中执行条件逻辑?

我将我的DataRepeater控件绑定到一个包含许多列的表。 我想只显示其中的一部分,具体取决于填充的内容。

我应该如何/在哪里进行dataRepeater中的contitional测试? 这是我的itemtemplate中的代码:

 

我得到的错误是:CS0103:当前上下文中不存在名称“Container”

你应该没问题:

 <% if (0 == (Eval("first").ToString().Length)) { i++; } %> 

但是根据你想要做什么,我可能会编写一个函数来处理数据的绑定,以保持显示和业务逻辑之间的分离。

例如

在你的aspx中:

   
. . .

在您的代码隐藏中:

 protected void FillInRepeater(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { //in here you bind to your repeater labels and stuff then do all that sorta logic. //Grab Primary Data string titleText = DataBinder.Eval(e.Item.DataItem, "title").ToString(); string somethingElseText = DataBinder.Eval(e.Item.DataItem, "somethingElse").ToString(); string maybeSeeMaybeDontText = DataBinder.Eval(e.Item.DataItem, "maybeSeeMaybeDont").ToString(); //Find the controls and populate them according the to row Label titleLabel = (Label)e.Item.FindControl("title"); Label somethingElseLabel = (Label)e.Item.FindControl("somethingElse"); Label maybeSeeMaybeDontLabel = (Label)e.Item.FindControl("maybeSeeMaybeDont"); // display the fields you want to titleLabel.Text = titleText; somethingElseLabel.Text = somethingElseText; // here is where you could do some of your conditional logic if (titleText.Length != 0 && somethingElseText.Length != 0) { maybeSeeMaybeDontLabel.Text = maybeSeeMaybeDontText; } } } 

就个人而言,我更喜欢用这种方式做事,而不是在ASP中做任何逻辑。 我知道这对某些人来说似乎有些愚蠢,但我喜欢尽可能地将我的业务逻辑与我的显示逻辑分开。