父母 - >孩子与中继器的关系

时间:2015-12-28 23:29:44

标签: c# ado.net

我的listitem让我的孩子出了问题。它没有显示正确的顺序或正确列出它们

public class Lektion
{
    public Lektion()
    {

    }

    public Lektion(int LektionId,int visLektion, DateTime Dato, string Titel, string introtekst, List<kursusnoter> noter)
    {

        this.LektionId = LektionId;
        this.visLektion = visLektion;
        this.Dato = Dato;
        this.Titel = Titel;
        this.introtekst = introtekst;
        this.noter = noter;

    }


   public int LektionId { get; set; }
   public int visLektion { get; set; }
   public DateTime Dato { get; set; }
   public string Titel { get; set; }
   public string introtekst { get; set; }
   public List<kursusnoter> noter { get; set; }


    public class kursusnoter
{
    public kursusnoter()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    public kursusnoter(int kursusnoterId, int FK_KursusLektion, string notenavn, string notelink)
    {
        this.kursusnoterId = kursusnoterId;
        this.FK_Kursuslektion = FK_Kursuslektion;
        this.notenavn = notenavn;
        this.notelink = notelink;
    }

    public int kursusnoterId { get; set; }
    public int FK_Kursuslektion { get; set; }
    public string notenavn { get; set; }
    public string notelink { get; set; }
}



public List<Lektion> IndlaesLektionerMedNoter()
    {
                var lektioner = new List<Lektion>();
                SqlConnection Conn2 = new SqlConnection();
                Conn2.ConnectionString = ConfigurationManager.ConnectionStrings["masterConnectionString"].ToString();
                SqlCommand cmd2 = new SqlCommand();

                cmd2.Connection = Conn2;


                cmd2.CommandText = "select KursusLektion.*, Kursusnoter.* from KursusLektion INNER JOIN kursusnoter ON kursusnoter.FK_Kursuslektion = KursusLektion.LektionId where KursusLektion.FK_KursusId = @kursusid";
                cmd2.Parameters.AddWithValue("@kursusid", SqlDbType.Int).Value = Request.QueryString["kursusid"];
                Conn2.Open(); 
                var reader2 = cmd2.ExecuteReader();
                var prevId = 0;
                Lektion lektion = null;   
                while (reader2.Read())
        {
            var id = Convert.ToInt32(reader2["LektionId"]);
            if (prevId != id)
            {
                prevId = id;
                lektion = new Lektion();
                lektion.LektionId = id;
                lektion.visLektion = (int)reader2["VisLektion"];
                lektion.Dato = (DateTime)reader2["Dato"];
                lektion.Titel = Convert.ToString(reader2["Titel"]);
                lektion.noter = new List<kursusnoter>();
                lektioner.Add(lektion);

            }
            var note = new kursusnoter();
            note.kursusnoterId = Convert.ToInt32(reader2["kursusnoterId"]);
            note.notenavn = Convert.ToString(reader2["notenavn"]);
            note.notelink = Convert.ToString(reader2["notelink"]);
            lektion.noter.Add(note);
          }

                     return lektioner;


    }

我现在得到什么

enter image description here

但意思是这个

enter image description here

所以任何人都有一个想法,我做错了什么?

PS。 aspx看起来像这样

<asp:Repeater id="rptLektioner" runat="server">
                    <ItemTemplate>
                        <div style="margin-left:145px; margin-top:50px; width:600px; height:auto;">
                        <%#Eval("Dato", "{0: dd. MMMM yyyy}") %> - <%#Eval("Titel") %><br />
                            <%#Eval("introtekst") %><br /><br />
                        <asp:Repeater ID="Repeater1" runat="server" DataSource='<%# Eval("noter") %>'>
                            <ItemTemplate>

                                <a href='PDF/<%#Eval("notelink") %>'>[<%#Eval("notenavn") %>]</a><br /><br />                         


                            </ItemTemplate>
                        </asp:Repeater></div>
                    </ItemTemplate>
                </asp:Repeater>

1 个答案:

答案 0 :(得分:0)

我通过将sql编辑为

来解决问题

select KursusLektion.*, Kursusnoter.* FROM KursusLektion INNER JOIN kursusnoter ON KursusLektion.LektionId = kursusnoter.FK_Kursuslektion WHERE (KursusLektion.FK_KursusId = @kursusid) ORDER BY KursusLektion.LektionId