Jag behöver hjälp med att göra en repeater i en repeater. Principen är ungefär så här: Aah. Okej. Det ser inte ut att vara några större problem, förutom.: Nej, det var bara ett fiktivt exempel! Jag har följande kod nu: Du har vänt på det, borde väl vara:nested repeater
Jag har börjar med följande kod:
http://www.aspsidan.se/code/default.asp?c=5229
Kan jag bygga ut den och skapa en relation mellan förälder och barn repeatern?
Jag vet dock inte hur och det är där ni kommer in, hur gör jag?Sv: nested repeater
<code>
Sub ItemDataBoundEventHandler(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim OrderID As String
OrderID = DataBinder.Eval(e.Item.DataItem, "OrderID")
Dim childRepeater As Repeater = CType(e.Item.FindControl("rptOrderItems"), Repeater)
childRepeater.DataSource = DataLayer.GetOrderItems(OrderID)
childRepeater.DataBind()
End If
End Sub
</code>Sv:nested repeater
Vad ska jag sätta child repeaterns datasource till i mitt fall?
Jag har skrivit så här:
Dim imgID As String
imgID = DataBinder.Eval(e.Item.DataItem, "imageid")
Dim child As Repeater = CType(e.Item.FindControl("ads"), Repeater)
child.DataSource = datalayer.GetOrderItems(imgID)
child.DataBind()
Är detta rätt?
Sv: nested repeater
Som Datasource använder du t.ex. Datareader eller DataTable.Sv: nested repeater
<%@ Page Language="vb" Debug="true" %>
<%@ import Namespace="System.Data.SqlClient" %>
<%@ import Namespace="System.Data" %>
<script runat="server">
Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim cnn As SqlConnection = New SqlConnection("server=xx;database=xx;uid=xx_xx;pwd=xx_x;")
Dim cmd1 As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM tblpcUser", cnn)
Dim ds As DataSet = New DataSet()
cmd1.Fill(ds, "tblpcuser")
Dim cmd2 As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM tblcompany", cnn)
cmd2.Fill(ds, "tblCompany")
ds.Relations.Add("myrelation", _
ds.Tables("tblpcuser").Columns("CompanyID"), _
ds.Tables("tblCompany").Columns("CompanyID"))
parentRepeater.DataSource = ds.Tables("tblpcuser")
Dim childrepeater As repeater = CType(parentrepeater.FindControl("child"), repeater)
childrepeater.DataSource = ds.Tables("tblCompany")
Page.DataBind()
cnn.Close()
End Sub
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>FAQ</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<asp:Repeater id="parentrepeater" runat="server" Visible="true">
<ItemTemplate>
<p><b><%# DataBinder.Eval(Container.DataItem, "Firstname") %></b></p>
<asp:Repeater id="child" runat="server" datasource='<%# Container.DataItem.Row.GetChildRows("myrelation") %>'>
<ItemTemplate>
<%# Container.DataItem("CompanyName") %>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
</body>
</html>
Men får felmeddelandetThese columns don't currently have unique values.
Line 14: cmd2.Fill(ds, "tblCompany")
Line 15:
Line 16: ds.Relations.Add("myrelation", _
Line 17: ds.Tables("tblpcuser").Columns("CompanyID"), _
Line 18: ds.Tables("tblCompany").Columns("CompanyID"))
Vad gör jag för fel?
Sv:nested repeater
ds.Relations.Add("myrelation", _
ds.Tables("tblCompany").Columns("CompanyID"), _
ds.Tables("tblpcuser").Columns("CompanyID"))
Alltså company ska vara förälder till user (1:M)