Вложенный повторитель

У меня Есть дисплей, который должен быть немного более динамичным, чем, к чему я являюсь использованием и, может казаться, вполне не нахожу ответ, в котором я нуждаюсь.

                        Customer a     Customer b     Customer c    (and so on)
  savings with product a

  savings with product b

  (and so on)

Я знаю, что всегда будет минимум одного в каждом поле. Кто-то сказал, используют вложенный повторитель или что-то. Я озирался и не мог узнать, как использовать вложенный повторитель. Я нахожусь на крайнем сроке и не могу действительно играть с вещами, пока я не нахожу что-то, что работает.

Какое управление asp я должен использовать, чтобы сделать это? Пример был бы хорош, но я просто нуждаюсь в помощи в правильном направлении.

Я использую sql, но получаю данные через ссылку. Данные заканчиваются в списках.

Спасибо за помощь!

8
задан Hazior 28 July 2010 в 18:50
поделиться

2 ответа

Nested Repeaters are pretty easy. Just throw one in your ItemTemplate, and in the OnItemDataBound event of your main repeater do the following

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
     DataRowView row = (DataRowView)e.Item.DataItem;

     Repeater nestedRepeater = e.Item.FindControl("NestedRepeater") as Repeater;
     nestedRepeater.DataSource = getSavingsPerCustomer(row["customerID"]);
     nestedRepeater.DataBind();
 }

Where the template of the outer repeater had a customer name and a repeater and the inner one has the different savings

probably incorrect syntax but you get the idea

<asp:repeater ID="outer">
<HeaderTemplate>
    <div style="float:left">
</HeaderTemplate>
<ItemTemplate>
     Customer: <%= Eval(customer)%><br/>
     <asp:repeater ID="NestedRepeater">
          <ItemTemplate>
          Saving: <%= Eval(saving)%><br/>
          </ItemTemplate>
     </asp:repeater>
</ItemTemplate>
<FooterTemplate>
    </div>
</FooterTemplate>
</asp:repeater>

Similar SO question: Repeater in Repeater

17
ответ дан 5 December 2019 в 07:56
поделиться

Вы можете использовать GridView с AutoGenerateColumns="true". Это создаст ваши колонки на основе источника данных, который вы привязываете.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true">
</asp:GridView>

Рассмотрим этот класс

public class A
{
    public string Field1 { get; set; }
    public int Field2 { get; set; }
}

И этот код

GridView1.DataSource = new List<A>() {
    new A() { Field1 = "a", Field2 = 1 },
    new A() { Field1 = "b", Field2 = 2 },
    new A() { Field1 = "c", Field2 = 3 },
};
GridView1.DataBind();

Это создаст HTML таблицу с колонками Field1 и Field2 с соответствующими 3 строками. Что-то вроде этого.

<table>
    <tbody>
        <tr>
            <th scope=col>Field1</th>
            <th scope=col>Field2</th>
        </tr>
        <tr>
            <td>a</td>
            <td>1</td>
        </tr>
        <tr>
            <td>b</td>
            <td>2</td>
        </tr>
        <tr>
            <td>c</td>
            <td>3</td>
        </tr>
    </tbody>
</table>

Если вы измените источник данных на другой источник с другими колонками, он автоматически сгенерирует соответствующие колонки для вас.

1
ответ дан 5 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: