【问题标题】:Use a Repeater from an Array使用数组中的中继器
【发布时间】:2012-01-17 14:51:49
【问题描述】:

假设我有一组逗号分隔的列表需要显示到 Repeater 中,我该怎么做?

所以,

List1 = "1, 2, 3, 4"
List2 = "a, b, c, d"

如果我将这些转换为数组,如何将它们绑定到 Repeater 并获取 Repeater 中每个列表的值?

我想获得如下所示的 HTML 输出:

<div>
    <span> CONTENT TO LIST 1(0) </span>
    <span> CONTENT OF LIST 2(0) </span>
</div>

<div>
    <span> CONTENT TO LIST 1(1) </span>
    <span> CONTENT OF LIST 2(1) </span>
</div>
.... etc

【问题讨论】:

  • 哇,您的问题已被编辑为完全不同的内容……您应该提出一个新问题。现在我回答你的第一个问题的答案完全没有意义......
  • 对不起...我知道!我改变主意了如何去做......仍然......两个问题的答案仍然相关,我有点难以解决如何解决这个问题!
  • 您的问题中List2 的输出在哪里?您可以使用自定义对象将列表合并为单个 List,然后绑定到新的 List
  • 没关系...我认为你的第一个例子是为我做的。与您发布的 C# 相比,它在 VB 中有点冗长。
  • 酷,很高兴它正在工作。减去 ; 的 VB 应该几乎相同 :)

标签: asp.net vb.net arrays data-binding repeater


【解决方案1】:

是的,你可以,这是一个简单的例子。

标记:

<asp:Repeater ID="rpTest" runat="server">
    <ItemTemplate>
        <div id="row<%# Eval("ID").ToString() %>">DIV CONTENT</div>
    </ItemTemplate>
</asp:Repeater>

准备测试代码:

public class TestObject
{
    public int ID { get; set; }
    public string Text { get; set; }
}

在您的 Page_Load 或您初始化 Repeater 的位置:

List<TestObject> lst = new List<TestObject>();
lst.Add(new TestObject() { ID = 0, Text = "Zero" });
lst.Add(new TestObject() { ID = 1, Text = "One" });
lst.Add(new TestObject() { ID = 2, Text = "Two" });
lst.Add(new TestObject() { ID = 3, Text = "Three" });

rpTest.DataSource = lst;
rpTest.DataBind();

输出:

<div id="row0">DIV CONTENT</div>     
<div id="row1">DIV CONTENT</div>     
<div id="row2">DIV CONTENT</div>    
<div id="row3">DIV CONTENT</div>

编辑:

要绑定到Array,只需将Array 分配给DataSource,然后通过以下方式访问绑定中的Array 项:

<%# Container.DataItem %>

【讨论】:

    【解决方案2】:

    在您可以使用的 .net 网络表单中

    <% for (int i = 0; i < totalRequired; i++)
       { %>
       <div id="<%= i %>"></div>
    <% } %>
    

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      我有一个aspx的建议:

      <asp:Repeater ID="rep" runat="server">
              <ItemTemplate>
                  <div>
                      <span>CONTENT TO LIST 1(<%# DataBinder.Eval(Container, "DataItem.Key").ToString()%>)</span>
                      <span>CONTENT TO LIST 2(<%# DataBinder.Eval(Container, "DataItem.Value").ToString()%>)</span>
                  </div>
              </ItemTemplate>
          </asp:Repeater>
      

      背后的代码:

      Dim test() As String = "1,2,3,4".Split(",")
      Dim test2() As String = "a,b,c,d".Split(",")
      
      Dim ls As New List(Of KeyValuePair(Of String, String))
      For i As Integer = 0 To test.Count - 1
          ls.Add(New KeyValuePair(Of String, String)(test(i), test2(i)))
      Next
      rep.DataSource = ls
      rep.DataBind()
      

      【讨论】:

        猜你喜欢
        • 2010-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多