Я могу придумать несколько подходов.
Я бы начал с вопроса, делали ли вы когда-нибудь вложенные повторители. Если нет, начните с того, что следующая вещь, которую я собираюсь сказать, имеет смысл. (Это концепция, которую вы должны получить в первую очередь.)
http://support.microsoft.com/kb/306154
Вы можете создать свой пользовательский элемент управления, чтобы он мог быть привязан к данным, и использовать понятия из вложенных повторителей для привязки данныхэтот элемент управления.
Другим жизнеспособным вариантом будет использование события ItemDataBound повторителя для добавления элемента управления в коде позади.
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx
Третий вариантбыло бы создать функцию на стороне сервера и поместить вызов метода в ItemTemplate
<ItemTemplate>
<%# DisplayProduct(DataBinder.Eval(Container,"DataItem.ProductId")) %>
</ItemTemplate>
...
Public Function DisplayProduct(ByVal ProductID as Integer) AS String
... logic goes here
End Function
Все три будут работать, и есть плюсы и минусыкаждому. Первый вариант, вероятно, самый «правильный», но вы захотите сделать то, что вам удобно. Лично я бы попробовал все три и посмотрел, какой из них работает лучше.
------------ Добавлено --------------------
Понятно ... Думаю, моя формулировка может сбивать с толку ...
Я думаю о том, чтобы сделать ascx LOOK похожим на элемент управления с привязкой к данным ...
То, что я делал в прошлом, - это создание userControl и выставление в нем открытого свойства.
Из кода за ASCX (простите, если синтаксис VB выключен .. Я не делал VB в течение нескольких лет):
Dim _RecordID as Integer = 0
Public Property RecordId
Get
Return _RecordID
End Get
Set(ByVal Calue as Integer)
_RecordID = Value
End Set
End Property
и в Page_LoadСобытие ascx, поместите свой код для загрузки данных, как и любую страницу aspx, используя свойство RecordID.
Затем на странице, на которой находится файл ASCX
<%@ Register TagPrefix= = "dds" TagName="ProductControl" .... %>
<ItemTemplate>
<dds:ProductControl RecordId = '<%# (DataBinder.Eval(Container,"DataItem.ProductId")) %>'
</ItemTemplate>