gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:10:15 25 4
gpt4 key购买 nike

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

我应该如何/在何处进行 dataRepeater 中的条件测试?这是我的项目模板中的代码:

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

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

最佳答案

你应该没问题:

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

但根据您想要执行的操作,我可能会编写一个函数来处理数据绑定(bind),以保持显示和业务逻辑之间的分离。

例如

在你的 aspx 中:

<asp:Repeater id="myRepeater" runat="server" onDataItemBound="FillInRepeater">
<ItemTemplate>
<div class="contactLarge">
<div style="background-color:#C5CED8;clear:both"><asp:Label runat="server" ID="title"></asp:Label>
.
.
.
</div>
</ItemTemplate>
<AlternatingItemTemplate>
</AlternatingItemTemplate>
</asp:Repeater>

在您的代码隐藏中:

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 内部做任何逻辑。我知道这对某些人来说可能有点傻,但我喜欢尽可能将我的业务逻辑与显示逻辑分开。

关于c# - 如何在 ASP.NET DataRepeater 控件中执行条件逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3464470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com