C# 使用单个表作为嵌套中继器的父表和子表时出现错误“父表键和子表相同”

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

我正在使用外部和内部中继器。第一个是公司名称。第二个列表列出了为该公司完成的任务。每个公司都有许多任务。这是我第一次使用嵌套中继器

问题是,我使用的是一个表跟踪器。列CompanyName来自Table1Tracker,就像Task一样,我使用的每个示例都使用两个表。创建关系时,我发现错误父键和子键相同

    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()