det jag kan komma på är att göra en UserControl (el. ServerControl) som man laddar in på sidorna:
rpt_tpl.ascx
========
<%@ Control Language="VB" ClassName="TempRepeater" Debug="True" %>
<script runat="server">
Private _dataSource As Object
Private _header As String
Public Property Header() As String
Get
Return _header
End Get
Set(ByVal Value As String)
_header = Value
End Set
End Property
Public Property DataSource() As Object
Get
Return _dataSource
End Get
Set(ByVal Value As Object)
_dataSource = Value
End Set
End Property
Private Sub Page_Load(sender As Object, e As EventArgs)
If (Not Page.IsPostBack) Then
tplRpt.DataSource = DataSource
tplRpt.DataBind()
End If
End Sub
</script>
<asp:Repeater id="tplRpt" runat="server">
<HeaderTemplate>
<%# Header%>
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %><br>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
och sedan på sidan du vill visa (har en testklass)
<%@ Page Language="VB" %>
<%@ Register TagPrefix="my" TagName="ctrl" src="rpt_tpl.ascx" %>
<script runat="server">
Private Sub Page_Load(sender As Object, e As EventArgs)
Dim _list As New ArrayList()
Dim _test As Test
_test = New Test()
_test.Name = "Patrik"
_list.Add(_test)
_test = New Test()
_test.Name = "Admin"
_list.Add(_test)
myCtrl.Header = "<H3>My Buddies!</H3>"
myCtrl.DataSource = _list
End Sub
Public Class Test
Private _name As String
Private _email As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal Value As String)
_name = Value
End Set
End Property
End Class
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<my:ctrl id="myCtrl" runat="server" ></my:ctrl>
</form>
</body>
</html>
Det enda som måste "stämma" är att datasourcen's DataContainers måste ha samma namn:
<%# DataBinder.Eval(Container.DataItem, [b]"Name"[/b]) %>
om nu detta är det bästa ska jag låte vara osagt .... men, det funkar :e
cya,
PatrikB