2012-03-12 4 views
1

У меня есть ретранслятор:Как получить доступ к динамически созданным элементам в репитере?

<asp:repeater id="someID" runat="server"> 
    <ItemTemplate> 
     <asp:hyperlink id=<%# Eval("ID")%> runat="server"></asp:hyperlink> 
    </ItemTemplate> 
</asp:repeater> 

Мне нужно получить ссылку на каждую гиперссылка и доступ к атрибутам этого.

В ItemDataBound, как я могу перейти к гиперссылке, чей идентификатор только что установлен? Если бы у меня был фиксированный ID для гиперссылки, это не было бы проблемой. Но так как мне нужен идентификатор также быть назначен динамически, я вроде заблудились в поисках пути ..

+0

Почему вам нужно установить его, как это? В чем цель? – PraveenVenu

+0

@PraVn Потому что я хочу, чтобы идентификаторы были уникальными. –

+0

, даже если вы статируете его статическим, а рендеринг, asp.net будет генерировать уникальные идентификаторы. Чтобы вернуть идентификатор, вам необходимо установить ID как DataKeyName ретранслятора, а в ItemDataBound вы можете получить к нему доступ. – PraveenVenu

ответ

1

Если вам необходимо получить доступ к каждому пункту, то вы должны подписаться на OnItemDataBound Event, а затем найти Контролируйте

private void rptMyTest_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) 
     { 
      Control control = e.Item.FindControl("ID_OF_YOUR_CONTROL") as Control; 
      if (control != null) 
      { 
       var dataItem = e.Item.DataItem as MYITEMTYPE; 
       if (DateTime.Now > dataItem.DateYouNeedToCheck) 
        control.ToolTip = "from the past"; 

       //ALL THE MAGIC HAPPENS HERE 
      } 
     } 
    } 

Надеюсь, что это поможет.

JUST ADDED только что прочитал ваше сообщение.

ИДЕНТИФИКАЦИЯ ВНУТРЕННЕГО ПОВТОРНОГО ЭЛЕМЕТА БУДЕТ УСТАНОВИТЬ АВТОМАТИЧЕСКИ ДЛЯ КАЖДОГО ПУНКТА, но вам нужно установить его заранее на некоторое статическое значение (чтобы получить ссылку на него).

Если вы пытаетесь получить к нему доступ с помощью JQuery (или javascript), я бы предложил не использовать жестко закодированные идентификаторы - есть разные способы делать такие вещи.

Если вы объясните немного больше того, чего вы пытаетесь достичь, гораздо легче ответить на ваш вопрос или предложить что-то.

UPDATE проверка пример кода выше

+0

О, да, я также просто прочитал о вашем обновлении ... Вы правы, думая, что я буду обращаться к ним с помощью jQuery. Мне нужно, я в основном привязываю записи событий. Если дата события была в прошлом, я хочу установить атрибут title в тег привязки как: title = «прошлый». У меня было достаточно проблем с попыткой разобраться с датами в javascript, возвращаемом asp.net. Поэтому я хотел посмотреть, есть ли способ сделать это с помощью кода. –

+0

Почему бы вам не проверить дату в коде за ним и установить свойство ToolTip в «прошлое ...» (всплывающая подсказка отображается как заголовок). Вы излишне оскорбляете вещи, пытаясь сделать это на стороне клиента. –

+0

Имеет смысл! И как я должен принять это как ответ сейчас? –

Смежные вопросы