•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the ASP.NET section within the Web Development category of DaniWeb, a massive community of 455,973 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,819 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our ASP.NET advertiser: Lunarpages ASP Web Hosting
Views: 902 | Replies: 6 | Solved
![]() |
•
•
Join Date: Sep 2007
Posts: 1,058
Reputation:
Rep Power: 4
Solved Threads: 61
So basically this is what I have. In the database, there is a table called LocalTalent. Inside this table there are Two Fields, one is the LTName, and the other is the LTID. Now when my client adds a new talent category, I want this to automatically affect the page it is supposed to. Now on this page, talent.aspx, I have a datalist that holds the repeaters. The datalist is trully unneeded. It is not bound in any way, just there incase I do need it bound. Easily removed, or kept, whatever... well, however, I have it there for repeated columns only. Anyway, each category in the table LocalTalent needs to produce it's own repeater to show the newest 20 records added. So if there are 5 categories, I need 5 repeaters displayed with the records it needs as well. I will post my code shortly, but I need help on this ASAP.
•
•
Join Date: Sep 2007
Posts: 1,058
Reputation:
Rep Power: 4
Solved Threads: 61
Dim strSQL As String
Dim i As Integer = 0
cmdSelect = New OdbcCommand( "SELECT * FROM Talent", conPubs )
Dim dtrAdapter As OdbcDataAdapter
Dim ds As New DataSet()
Dim rep As Repeater
conPubs.Open()
Dim dtrReader As OdbcDataReader = cmdSelect.ExecuteReader()
if dtrReader.HasRows then
while dtrReader.Read()
strSQL = "SELECT a.UserID, a.UserName, b.* FROM Users a, Talent b WHERE a.Talent='" & dtrReader("LTName") & "' AND b.LTID=" & dtrReader("LTID") & " LIMIT 10"
dtrAdapter = New OdbcDataAdapter( strSQL, conPubs)
dtrAdapter.Fill(ds, (dtrReader("LTID")).ToString())
rep = New Repeater
rep.ID = (dtrReader("LTID")).ToString()
rep.HeaderTemplate = New NewRepeater(ListItemType.Header)
rep.ItemTemplate = New NewRepeater(ListItemType.Item)
rep.FooterTemplate = New NewRepeater(ListItemType.Footer)
rep.DataSource = ds.Tables((dtrReader("LTID")).ToString())
rep.DataBind()
end while
end if
dtrReader.Close()
conPubs.Close()This is what I have and it comes up with this error:
Unable to cast object of type 'NewRepeater' to type 'System.Web.UI.ITemplate'
•
•
Join Date: Sep 2007
Posts: 1,058
Reputation:
Rep Power: 4
Solved Threads: 61
that is the front end code. The back end is as follows: (done on inline coding)
Public Class NewRepeater
Dim templateType As ListItemType
Sub New(ByVal type As ListItemType)
templateType = type
End Sub
Public Sub InstantiateIn(ByVal container As Control)
Dim ph As New PlaceHolder()
Dim item1 As New Literal()'LTID in header
Dim item2 As New Literal()'LTName in header
Dim item3 As New Literal()'LTName in header
Dim item4 As New Literal()'UserID in item
Dim item5 As New Literal()'UserName in item
Dim item6 As New Literal()'UserName in item
Dim item7 As New Literal()'LTID in Footer
Dim item8 As New Literal()'LTName in Footer
Dim item9 As New Literal()'LTName in Footer
item1.ID = "item1"
item2.ID = "item2"
item3.ID = "item3"
item4.ID = "item4"
item5.ID = "item5"
item6.ID = "item6"
item7.ID = "item7"
item8.ID = "item8"
item9.ID = "item9"
Select Case (templateType)
Case ListItemType.Header
ph.Controls.Add(New LiteralControl("<table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""122""><tr><td><div style=""margin:3px 0px 3px 0px;""><a href=""/Vegas2/Talent/talent.aspx?cat="))
ph.Controls.Add(item1)
ph.Controls.Add(New LiteralControl(""" title="""))
ph.Controls.Add(item2)
ph.Controls.Add(New LiteralControl(" Local Talent""><strong>"))
ph.Controls.Add(item3)
ph.Controls.Add(New LiteralControl("</strong></a></div></td></tr><tr><td>"))
Case ListItemType.Item
ph.Controls.Add(New LiteralControl("<div style=""margin:3px 0px 3px 0px;"">- <a href=""/Vegas2/Profile/?id="))
ph.Controls.Add(item4)
ph.Controls.Add(New LiteralControl(""" title="""))
ph.Controls.Add(item5)
ph.Controls.Add(New LiteralControl("'s Profile"">"))
ph.Controls.Add(item6)
ph.Controls.Add(New LiteralControl("</a></div>"))
AddHandler ph.DataBinding, New EventHandler(AddressOf Item_DataBinding)
Case ListItemType.Footer
ph.Controls.Add(New LiteralControl("</td></tr><tr><td><div style=""margin:12px 0px 0px 2px;""><a href=""/Vegas2/Talent/talent.aspx?cat="))
ph.Controls.Add(item7)
ph.Controls.Add(New LiteralControl(""" title=""View All "))
ph.Controls.Add(item8)
ph.Controls.Add(New LiteralControl(" Listings"">View All """))
ph.Controls.Add(item9)
ph.Controls.Add(New LiteralControl("""</a><br /><a href=""/Vegas2/Register/register.aspx"" title=""Register and Setup Your Profile!"">Become Part of The Local Talent!</a></td></tr></table>"))
AddHandler ph.DataBinding, New EventHandler(AddressOf Item_DataBinding)
End Select
container.Controls.Add(ph)
End Sub
End Class
Shared Sub Item_DataBinding(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ph As PlaceHolder = CType(sender, PlaceHolder)
Dim ri As RepeaterItem = CType(ph.NamingContainer, RepeaterItem)
Dim item1Value As Integer = Convert.ToInt64(DataBinder.Eval(ri.DataItem, "LTID"))
Dim item2Value As String = Convert.ToString(DataBinder.Eval(ri.DataItem, "LTName"))
Dim item3Value As String = Convert.ToString(DataBinder.Eval(ri.DataItem, "LTName"))
Dim item4Value As Integer = Convert.ToInt64(DataBinder.Eval(ri.DataItem, "UserID"))
Dim item5Value As String = Convert.ToString(DataBinder.Eval(ri.DataItem, "UserName"))
Dim item6Value As String = Convert.ToString(DataBinder.Eval(ri.DataItem, "UserName"))
Dim item7Value As Integer = Convert.ToInt64(DataBinder.Eval(ri.DataItem, "LTID"))
Dim item8Value As String = Convert.ToString(DataBinder.Eval(ri.DataItem, "LTName"))
Dim item9Value As String = Convert.ToString(DataBinder.Eval(ri.DataItem, "LTName"))
CType(ph.FindControl("item1"), Literal).Text = item1Value.ToString()
CType(ph.FindControl("item2"), Literal).Text = item2Value.ToString()
CType(ph.FindControl("item3"), Literal).Text = item3Value.ToString()
CType(ph.FindControl("item4"), Literal).Text = item4Value.ToString()
CType(ph.FindControl("item5"), Literal).Text = item5Value.ToString()
CType(ph.FindControl("item6"), Literal).Text = item6Value.ToString()
CType(ph.FindControl("item7"), Literal).Text = item7Value.ToString()
CType(ph.FindControl("item8"), Literal).Text = item8Value.ToString()
CType(ph.FindControl("item9"), Literal).Text = item9Value.ToString()
End Sub•
•
Join Date: Sep 2007
Posts: 1,058
Reputation:
Rep Power: 4
Solved Threads: 61
Now I have been screwing around with this all day and cannot seem to be successful. Please help as this is the last stage in a big site. Thank you.
THis is now what I have and it seems as if the sub repeater is either not pulling any rows or is never trully databinding. Only throws the portion of the main repeater.
THis is now what I have and it seems as if the sub repeater is either not pulling any rows or is never trully databinding. Only throws the portion of the main repeater.
sub page_load
Dim cmdSelect1 As New OdbcDataAdapter( "SELECT * FROM Talent", conPubs )
Dim ds As Dataset = New DataSet()
Dim cmdSelect2 = New OdbcDataAdapter( "SELECT a.UserID, a.UserName, a.Talent, b.* FROM Users a, Talent b WHERE a.Talent=b.LTID", conPubs )
cmdSelect1.Fill(ds, "main")
cmdSelect2.Fill(ds, "sub")
ds.Relations.Add("myrelation", ds.Tables("main").Columns("LTID"), ds.Tables("sub").Columns("Talent"))
dlMainRepeater.DataSource = ds
dlMainRepeater.DataBind()
end sub
'obviously some stuff was left out that is
'not needed for this question.
Sub dlMainRepeater_ItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs)
Dim dv As DataRowView = CType(e.Item.DataItem, DataRowView)
If Not dv Is Nothing Then
Dim nestedRepeater As Repeater = CType(e.Item.FindControl("rpSubRepeater1"), Repeater)
If Not nestedRepeater Is Nothing Then
nestedRepeater.DataSource = dv.CreateChildView("myrelation")
nestedRepeater.DataBind()
End If
End If
End Sub
''Repeaters are here:
<asp:DataList ID="dlMainRepeater" width="525" ItemStyle-Width="125" s RepeatColumns="4" runat="server">
<ItemTemplate>asdf
<asp:Repeater ID="rpSubRepeater1" runat="server">
<HeaderTemplate>
<table border="0" cellpadding="0" cellspacing="0" width="122"><tr><td><div style="margin:3px 0px 3px 0px;"><a href="/Vegas2/Talent/talent.aspx?cat=<%# DataBinder.Eval(Container.DataItem, "LTID") %>" title="<%# DataBinder.Eval(Container.DataItem, "LTName") %> Local Talent"><strong><%# DataBinder.Eval(Container.DataItem, "LTName") %></strong></a></div></td></tr><tr><td>
</HeaderTemplate>
<ItemTemplate>
adsfasdf
<div style="margin:3px 0px 3px 0px;">- <a href="/Vegas2/Profile/?id=<%# DataBinder.Eval(Container.DataItem, "UserID") %>" title="<%# DataBinder.Eval(Container.DataItem, "UserName") %>'s Profile">"</a></div>
</ItemTemplate>
<FooterTemplate>
</td></tr><tr><td><div style="margin:12px 0px 0px 2px;"><a href="/Vegas2/Talent/talent.aspx?cat=<%# DataBinder.Eval(Container.DataItem, "LTID") %>" title="View All <%# DataBinder.Eval(Container.DataItem, "LTName") %> Listings">View All "<%# DataBinder.Eval(Container.DataItem, "LTName") %>"</a><br /><a href=""/Vegas2/Register/register.aspx"" title=""Register and Setup Your Profile!"">Become Part of The Local Talent!</a></td></tr></table>
</FooterTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:DataList>•
•
Join Date: Sep 2007
Posts: 1,058
Reputation:
Rep Power: 4
Solved Threads: 61
Sure. What I did wrong was forgetting to bind the main repeater as I should have. This is mostly due to changing the code so much that I accidentally left it out.
<script language="vb" runat="server">
Sub Page_Load
if Not Page.IsPostBack then
Dim conPubs As New OdbcConnection( System.Configuration.ConfigurationManager.AppSettings.Get("ConnectionString") )
if Not Cache("TalentMain") Is Nothing and Not Cache("TalentSub") Is Nothing then
Dim ds As DataSet = New DataSet()
ds = Cache("Talent")
ds.Relations.Add("relation", ds.Tables("main").Columns("LTID"), ds.Tables("sub").Columns("LTID"))
dlMainRepeater.DataSource = ds.Tables("main").DefaultView
dlMainRepeater.DataBind()
else
Dim dataAdapt As New OdbcDataAdapter( "SELECT * FROM Talent", conPubs )
Dim ds As DataSet = New DataSet()
dataAdapt.Fill(ds, "main")
dataAdapt = New OdbcDataAdapter( "SELECT UserID, UserName, LTID FROM Users", conPubs )
dataAdapt.Fill(ds, "sub")
Cache.Insert("Talent", ds, Nothing, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration)
ds.Relations.Add("relation", ds.Tables("main").Columns("LTID"), ds.Tables("sub").Columns("LTID"))
dlMainRepeater.DataSource = ds.Tables("main").DefaultView
dlMainRepeater.DataBind()
end if
If conPubs.State = ConnectionState.Open then conPubs.Close()
end if
End Sub
Sub dlMainRepeater_OnItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs)
Dim datav As DataRowView = CType(e.Item.DataItem, DataRowView)
If Not datav Is Nothing Then
Dim SubRepeater As Repeater = CType(e.Item.FindControl("SubRepeater"), Repeater)
If Not SubRepeater Is Nothing Then
SubRepeater.DataSource = dv.CreateChildView("relation")
SubRepeater.DataBind()
End If
End If
End Sub
</script>
<asp:DataList ID="dlMainRepeater" width="500" RepeatDirection="Horizontal" ItemStyle-Width="125" OnItemDataBound="dlMainRepeater_OnItemDataBound" RepeatColumns="4" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "LTName") %>
<asp:Repeater ID="SubRepeater1" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "UserName") %>
</ItemTemplate>
</asp:Repeater>
<%# DataBinder.Eval(Container.DataItem, "LTID") %>
</ItemTemplate>
</asp:DataList> Last edited by SheSaidImaPregy : Nov 27th, 2007 at 2:41 am.
![]() |
•
•
•
•
•
•
•
•
DaniWeb ASP.NET Marketplace
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
•
•
•
•
.net .net framework 3.0 access ajax asp breach broadband code combo crime custom daniweb data data protection data transfer database developer development dom drive dropdownlist feed forensics government hard hardware hitachi internet linux microsoft module msdn net news office reader reuse security skin software sql storage terabyte theme vista weather web wikipedia xml xoap
- Hello everyone, I need some help big time pleaaaaaasssse! (Viruses, Spyware and other Nasties)
- Motorola T720 Phone and Verizon Wireless (Gadgets and Gizmos)
- needed big time hw due and late (C)
- Hijacked by http://fastsearch.cc/cxlow/ (Viruses, Spyware and other Nasties)
- problems with MSIESH.DLL (Viruses, Spyware and other Nasties)
- Data recovery crisis! (Windows NT / 2000 / XP / 2003)
- Hijackthis log file (Viruses, Spyware and other Nasties)
- Windows 95/98/98SE/MM = Time To UPGRADE (Windows 9x / Me)
- file systems (*nix Software)
Other Threads in the ASP.NET Forum
- Previous Thread: WCF on IIS - Getting error trying to connect with certificate based authentication
- Next Thread: Customizing BEHAVIOUR of sharepoint Web Part



Linear Mode