代码之家  ›  专栏  ›  技术社区  ›  Alex

用于数据绑定和/或的迭代器整数asp:Repeater

  •  1
  • Alex  · 技术社区  · 15 年前

    我有一个LINQ查询,它返回一个自定义对象。对象是从 Dictionary<T> 的结果对象,每个对象都有一个URL。我的LINQ对象将 根据T中的URL属性,然后取 object.First()

    现在我有了一个LINQ对象,所有对象都有唯一的URL,并且还计算了URL在原始文件中重复了多少次 Dictionary<T>.

    好的,在这一点上,我对我的LINQ对象执行一个数据绑定,到一个ASP页面。数据绑定到 <asp:Repeater> ItemTemplate .

    我想要的是得到 < 好像这是一个简单的 for (int i = 0; ... i++) 键入loop。这样我就可以动态地显示结果的编号(比如说,如果有一个包含五个结果的列表,那么每个结果都有一个。结果。。。。2结果。。。。三。结果。。。

    我不知道会有多少结果开始(可能没有)。

    我希望这不会太混乱!请询问您是否需要更好的解释。非常感谢,一如既往。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Kelsey    15 年前

    如果要在中显示行号 Repeater

    首先在.cs代码中创建一个整数。如:

    public partial class _YourPageName : System.Web.UI.Page
    {
        private int _itemCounter = 0;
    

    中继器 ItemTemplate 您只需要使用 Literal

    <asp:Literal ID="litCount" runat="server" OnDataBinding="litCount_DataBinding" />
    

    然后实施它 DataBinding 的事件 字面意义的 或者你想用的任何东西:

    protected void litCount_DataBinding(object sender, System.EventArgs e)
    {
        _itemCounter++;
        Literal lt = (Literal)(sender);
        lt.Text = _itemCounter.ToString();
    }
    

    每次 普通项 它将增加计数器并显示它。

    也许我过于简化了你的问题。

        2
  •  1
  •   Jon Skeet    15 年前

    不是的 完全 清楚你在做什么,尤其是你提到的 Dictionary 好像它只有一个类型参数而不是两个,但您可能需要考虑以下问题:

    var items = originalItems.Select((Value, Index) => new { Value, Index });
    

    Select Tuple<,> 如果您使用的是.NET4;这取决于结果将在何处使用。)

    var items = originalItems.Select((Value, idx) => new { Value, Index = idx + 1 });
    

    推荐文章