Событие ASP.NET Repeater ItemCreated связывает один и тот же элемент снова и снова - PullRequest
1 голос
/ 21 октября 2010

У меня есть повторитель на моей странице.В этом нет ничего удивительного.

<asp:Repeater runat="server" ID="rptBusiness">
    <HeaderTemplate>
        <table>
            <colgroup>
                <col width="170px" />
                <col width="75px" />
                <col width="75px" />
            </colgroup>
            <tr>                        
                <th style="text-align:left; background-color: Silver;">Business</th>
                <th style="text-align:left; background-color: Silver;">Rep</th>
                <th style="text-align:left; background-color: Silver;">City</th>
            </tr>
        </table>
        <div class="scrollDiv">
            <table>
                <colgroup>
                    <col width="155px" />
                    <col width="75px" />
                    <col width="75px" />
                </colgroup>
    </HeaderTemplate>
    <ItemTemplate>
                <asp:Literal runat="server" ID="litRow" />
    </ItemTemplate>                
    <FooterTemplate>
            </table>
        </div>
    </FooterTemplate>
</asp:Repeater>
  • HeaderTemplate определяет таблицу, содержащую строки заголовка, которые не прокручиваются.Он также определяет начало таблицы содержимого, которая содержится в элементе прокрутки.
  • ItemTemplate содержит один элемент управления Literal, который я заполняю в коде строк строк таблицы (мы вернемся к этому вмомент).
  • Шаблон FooterTemplate закрывает блок прокрутки и таблицу.

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

Dim list As System.Collections.Generic.List(Of Business)

list = BusinessWithAddress.Select(excludeBusKey, _
                                  searchCriteria, _
                                  contained, _
                                  Connector.GetConnectionString())

Me.rptBusiness.DataSource = list
Me.rptBusiness.DataBind()

Теперь я могу увидеть , что список содержит много различных предприятий.Более 800 из них, на самом деле.Проблема в том, что при возникновении события ItemCreated я получаю один и тот же бизнес-элемент каждый раз .

Почему?

Редактировать:

Забыли.Вот так я проверяю предмет, чтобы снова и снова определять, что он один и тот же.

Private Sub rptBusiness_ItemCreated(ByVal sender As Object, _
    ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) _
    Handles rptBusiness.ItemCreated


    Dim item = CType(e.Item.DataItem, Business)

    ' Content elided

End Sub
...