C# 使用单个表作为嵌套中继器的父表和子表时出现错误“父表键和子表相同”
我正在使用外部和内部中继器。第一个是公司名称。第二个列表列出了为该公司完成的任务。每个公司都有许多任务。这是我第一次使用嵌套中继器 问题是,我使用的是一个表跟踪器。列CompanyName来自Table1Tracker,就像Task一样,我使用的每个示例都使用两个表。创建关系时,我发现错误父键和子键相同C# 使用单个表作为嵌套中继器的父表和子表时出现错误“父表键和子表相同”,c#,asp.net,sql,parent-child,repeater,C#,Asp.net,Sql,Parent Child,Repeater,我正在使用外部和内部中继器。第一个是公司名称。第二个列表列出了为该公司完成的任务。每个公司都有许多任务。这是我第一次使用嵌套中继器 问题是,我使用的是一个表跟踪器。列CompanyName来自Table1Tracker,就像Task一样,我使用的每个示例都使用两个表。创建关系时,我发现错误父键和子键相同 ds.Relations.Add("myrelation", _ ds.Tables("Tracker").Columns("CompanyName"), _ ds.Ta
ds.Relations.Add("myrelation", _
ds.Tables("Tracker").Columns("CompanyName"), _
ds.Tables("Tracker").Columns("CompanyName"))
PRepeater.DataSource = ds.Tables("Tracker")
有办法解决这个问题吗?还有别的办法吗?除了建立另一个数据库?VB或C都可以
这里是我在btn点击时调用的整个Sub和aspx部分(如果有帮助的话)
Protected Sub bindParent()
conn = New System.Data.SqlClient.SqlConnection
conn.ConnectionString = ConfigurationSettings.AppSettings("connString")
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
Dim cmd1 As New SqlDataAdapter("Select * from Tracker", conn)
Dim ds As New DataSet()
cmd1.Fill(ds, "Tracker")
Dim cmd2 As New SqlDataAdapter("Select * from Tracker", conn)
cmd2.Fill(ds, "Tracker")
ds.Relations.Add("myrelation", _
ds.Tables("Tracker").Columns("CompanyName"), _
ds.Tables("Tracker").Columns("CompanyName"))
PRepeater.DataSource = ds.Tables("Tracker")
PRepeater.DataSource = ds.Tables("Tracker")
Page.DataBind()
conn.Close()
End Sub
aspx
*这就是我工作的例子
解决了这个问题,它给了我想要的输出,没有更多的错误消息
Dim cmd1 As New SqlDataAdapter("Select distinct CompanyName from Tracker", conn)
Dim ds As New DataSet()
cmd1.Fill(ds, "Company")
Dim cmd2 As New SqlDataAdapter("Select * from Tracker", conn)
cmd2.Fill(ds, "Tracker")
ds.Relations.Add("myrelation", _
ds.Tables("Company").Columns("CompanyName"), _
ds.Tables("Tracker").Columns("CompanyName"))
PRepeater.DataSource = ds.Tables("Company")
PRepeater.DataBind()
conn.Close()
*将解决方案从问题移动到答案关系。添加调用没有意义-您不需要添加关系,所有数据都在同一个表中?是的,所有数据都在同一个表中。您有什么想法吗?关系的要点是使第二个表成为第一个表的层次子表,层次结构由指定的键确定。下面的示例使用两个表和两个中继器-如果只有一个表,则只需要一个中继器。对于我想要的结构,我认为这是正确的方法。我需要重命名我的数据集。您可以使用一个表格。@ReeceZimm不要将您的答案编辑到您的问题中,请随答案一起发布答案。然后你就可以接受自己的答案了。目前,我已经将你的答案从问题中删除,并发布了一个包含内容的CW答案。
Dim cmd1 As New SqlDataAdapter("Select distinct CompanyName from Tracker", conn)
Dim ds As New DataSet()
cmd1.Fill(ds, "Company")
Dim cmd2 As New SqlDataAdapter("Select * from Tracker", conn)
cmd2.Fill(ds, "Tracker")
ds.Relations.Add("myrelation", _
ds.Tables("Company").Columns("CompanyName"), _
ds.Tables("Tracker").Columns("CompanyName"))
PRepeater.DataSource = ds.Tables("Company")
PRepeater.DataBind()
conn.Close()