【问题标题】:How to get the value of the last element of property in repeater如何获取中继器中属性的最后一个元素的值
【发布时间】:2016-02-25 08:19:22
【问题描述】:
     <asp:Repeater ID="ReptServices" runat="server" OnItemDataBound="ReptServices_OnItemDataBound">
                      <b>
                  <td>    <%# Eval("ApplicationSteps") %></td>
                     <td><%# Eval("Service.ServiceName") %></td>
                            <td>
                                <b><%# Eval("BeneficiaryUserUnitJob.User.NameAr") %>  </b>
                            </td>
                            <td><%# Eval("DateCreated") %></td>
                      </b>
       </asp:Repeater>

这个repeater在c#中填写为

ReptServices.DataSource = new ApplicationLogic(ApplicationType.Web).GetAllOutboxApplication(_currentUserUnitJob);

“ApplicationSteps”属性包含许多元素,其中包含另一个名为submitactiontypeid 的属性,如下图所示:

我想获取submitactiontypeid 的值,它存在于ApplicationSteps 的最后一个元素中

我问我要写什么&lt;%# Eval("ApplicationSteps") %&gt;

【问题讨论】:

  • 那么你需要最后一个RepeaterItemEval("ApplicationSteps") 的值吗?在哪里?
  • 抱歉看不懂!!​​span>
  • 不清楚你真正想要什么以及在哪里需要它。
  • 这样的事情可能对你有帮助:&lt;%# Container.ItemIndex + 1 == Items.Count ? "this is the last item" : null %&gt;
  • 似乎太懒了,但我尝试创建一个新的解决方案 :) &lt;%# Container.ItemIndex + 1 == Items.Count ? ((ApplicationSteps)Items[Container.ItemIndex]).SubmitActionTypeId : null %&gt;

标签: c# html asp.net arrays repeater


【解决方案1】:

我为您提供了不同的解决方案。

如果您无法在后面修改您的代码,我们仍然不需要中继器来解决。

<%
var repeaterDataSource = (dynamic)ReptServices.DataSource;
foreach (var item in repeaterDataSource)
{%>

<%=item.ApplicationSteps %>

<%}%>

这是您的基本中继器。因为我不知道你绑定到repater的数据类型是什么,所以我使用动态类型。

您可以根据自己的目的进行修改。

<%=item.ApplicationSteps.Last().SubmitActionTypeId  %>

首先,在不添加此行的情况下进行调试。如果运行正常,请添加上面的代码,然后重试。

【讨论】:

  • 当我执行第一个代码时,它像旧代码一样工作,没有错误,当我写最后一个代码时,它给了我一个错误说'System.Collections.Generic.HashSet&lt;ESERV.DataMapping.Entity.ApplicationStep&gt;' does not contain a definition for 'Last'
【解决方案2】:

如果您只需要在页面中呈现该值,那么repeater 是无用的。试试这个代码:

ASP

<asp:Label runat="server" ID="SubmitActionType"></asp:Label>

然后是服务器端(C#)

using System;
using System.Collections.Generic;
using System.Linq;

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var applicationSteps = GetApplicationSteps(); //Call the function that gives you the data you need

        var lastElement = applicationSteps.Last(); //Get the last element

        SubmitActionType.Text = lastElement.SubmitActionTypeId;
    }
}

repeater 在您需要为对象数组中的每个值呈现一些 html 时很有用。在这种情况下,您显然没有这样做。

【讨论】:

  • 我无法在cs类中修改我只能在aspx中编辑
  • @saraadly 有什么特别的原因吗?为什么不能修改?
  • 也是从 C# 中的一个查询动态填充的转发器数据源
  • 不是我的特权,中继器也填写为`ReptServices.DataSource = new ApplicationLogic(ApplicationType.Web).GetAllOutboxApplication(_currentUserUnitJob);`
  • @saraadly 该查询是您对变量 applicationSteps 的赋值。函数GetApplicationSteps 是我发明的一个函数,它暗示您应该用执行实际查询并带来数据的代码替换该代码。你应该试一试,显然在 ASP.NET 中,如果你想改变一些东西并尝试不同的方法,你必须修改你的服务器端代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 2020-02-22
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
相关资源
最近更新 更多