Member 12758480 Ответов: 1

Создайте новый ASP: repeater каждый раз, когда определенное поле SQL изменяет значение


Всем Привет,

надеюсь, вы здоровы. и заранее благодарю вас за любую помощь, которую вы можете мне оказать.

У меня есть система, которая требует создания ретранслятора (с новым заголовком) на основе значения, возвращаемого из sql-запроса

например моя таблица содержит следующую информацию:

Поле 1 / поле 2 / поле 3
информация 1 Информация 1
информация Информация 1
информация Информация 2
информация Информация 2
информация Информация 2

любая идея, как я мог бы создать ретранслятор динамически (программно) во время выполнения на основе содержимого моих данных в таблице базы данных

создание ретранслятора во время выполнения для всей информации или некоторых из них легко, но не знаю, как создать еще один, если поле 3 изменяет значение 2 - так что для всех записей со значением 2 место в ретрансляторе, все записи со значением 1 создают их в ретранслятор


надеюсь, что это происходит правильно. но так как завтра может быть 6 целых чисел со значением поля 4, я хочу, чтобы он сделал то же самое снова и сгруппировал 4 вместе..

другими словами создайте повторитель для каждой группы сущностей с одинаковым значением в поле 3

Внешний код выглядит следующим образом:
<asp:Repeater ID="SKillsTOEnter" runat="server">
     <HeaderTemplate>
         <table width="50%">
             <tr>
                 <th>Field1</th>
             </tr>
     </HeaderTemplate>
     <ItemTemplate>
         <tr>
             <td width="80%"><Asp:label id="fieldinfo" Text=<%#DataBinder.Eval(Container.DataItem, "Field1")%> runat="server"></Asp:label></td>
                </tr>
     </ItemTemplate>
     <FooterTemplate>
         </table>
     </FooterTemplate>
 </asp:Repeater>


Заранее спасибо
Роберт Белстен

Что я уже пробовал:

я могу создать один ретранслятор asp, чтобы вытащить их все , но не один, чтобы добавить заголовок, когда поле 3 изменяет значение, или создать новый ретранслятор, когда значение изменяется в поле 3

Внутренний код

myCommand = New SqlDataAdapter("select Field1, field2, FIeld3 From Table1  Order By FIELD2 ", myConnection)
        myCommand.Fill(ds)
        SKillsTOEnter.DataSource = ds
        SKillsTOEnter.DataBind()

ZurdoDev

Просто получите ваши данные в том порядке и так, как вы хотите.

Member 12758480

спасибо за это,

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


ZurdoDev

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

Member 12758480

да, так что есть около 10 элементов, которые имеют номер 1 в поле 3 в моей таблице , но это может быть chanegd в любое время, что означает, что репитер растет, это легко, но как вы получаете asp, чтобы создать новый репитер, когда это значение в поле 3 равно 2 (и есть 5 строк со значением 2, из которых также может измениться)

поэтому создайте новый ретранслятор во время выполнения, если он найдет новое значение в поле 3 таблицы

надеюсь, что это поможет, так как мне трудно объяснить себя, лол..

1 Ответов

Рейтинг:
2

Richard Deeming

Как насчет чего-то вроде этого:

SkillsToEnter.DataSource = ds.Tables(0).GroupBy(Function (row) row.Field(Of Integer)("Field3"))
SkillsToEnter.DataBind()

<asp:Repeater id="SkillsToEnter" runat="server">
<ItemTemplate>
    <h1>Field3: <%# Eval("Key") %></h1>
    
    <asp:Repeater runat="server" DataSource='<%# Container.DataItem %>'>
    <HeaderTemplate>
        <table style="width:50%">
        <thead>
            <tr>
                <th>Field1</th>
            </tr>
        </thead>
        <tbody>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td style="width:80%">
                <asp:label id="fieldinfo" runat="server" Text='<%# Eval("Field1") %>' />
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </tbody>
        </table>
    </FooterTemplate>
    </asp:Repeater>
</ItemTemplate>
</asp:Repeater>