none
Script zur anzeige von Daten aus Datenbank RRS feed

  • Frage

  • Ich habe folgendenes schon ausprogrammiert jedoch hab ich das Problem das die Tabelle leer ist.

    Index.html

        

    <h2>
        Zettel
    </h2>
    <select id="IdSelect">

    </select>
    <table id="IdTable">
        <thead >
            <tr>
                <td>Name </td>
                <td>Priorität </td>
            </tr>
        </thead>
    </table>

    ------

    Controller


    namespace TheLastWeb.Controllers
    {
        public class SheetController : ApiController
        {
            // GET api/values
            public IEnumerable<SheetDto> Get()
            {
                using(Uow uow = new Uow())

                {
                    return uow.RepSheet.Get(include: "Notes").Select(s => s.ToDto());
                }
                
            }

            // GET api/values/5
            public string Get(int id)
            {
                return "value";
            }
            public SheetDto Get(string Name)
            {
                using (Uow uow = new Uow())
                {
                    return uow.RepSheet.Get(s => s.Name.Equals(Name) , include: "Notes").Select(s => s.ToDto()).FirstOrDefault();
                }

            }


            // POST api/values
            public void Post([FromBody]string value)
            {
            }

            // PUT api/values/5
            public void Put(int id, [FromBody]string value)
            {
            }

            // DELETE api/values/5
            public void Delete(int id)
            {
            }

        }
        public class SheetDto
        {
            public int SheetId { get; set; }
            public string Name { get; set; }
            public DateTime CreationDate { get; set; }
            public IEnumerable<NoteDto> Notes{ get; set; }
        }
        public class NoteDto
        {
            public int NoteId { get; set; }
            public string NoteName { get; set; }
            public int Priority { get; set; }
        }
        public static class SheetControllerExtensions
        {
            public static SheetDto ToDto(this Sheet sheet){
                return new SheetDto()
                {
                    Name = sheet.Name,
                    CreationDate = sheet.CreationDate,
                    Notes = sheet.Notes.Select(s => s.ToDto())
                };
            }
            public static NoteDto ToDto(this Note note)
            {
                return new NoteDto()
                {
                    NoteName = note.NoteName,
                    Priority = note.Priority
                };
            }
        }
    }

    -----
    Script zur Darstellung

    $(function () {
        $.ajax({
            url: '/api/sheet',
            success: function (data) {
                var myselect = $('#IdSelect');
                $.each(data, function (index, item) {
                    myselect.append($('<option>' + item.Name + '</option>'));

                });
                myselect.change(function () {
                    var table = $('#IdTable');
                    $.ajax({
                        url: '/api/sheet?Name=' + this.value,
                        success: function (data2) {
                            console.log(data2.Notes);
                            $.each(data2.Notes, function (index, item) {
                                table.append($('<tr><td>' + item.NoteName + '</td></tr>'));
                            });
                        }
                    });

                    alert("Ich wurder geändert");
                });
                console.log(data);
            }
        });

    });

    -----
    Unit of Work

    namespace TheLastData
    {
        public class Uow : IDisposable
        {
            private DatabaseContext db = new DatabaseContext();
            private RepositoryUow<Sheet, DatabaseContext> repSheet;
            private RepositoryUow<Note, DatabaseContext> repNote;

            public RepositoryUow<Sheet, DatabaseContext> RepSheet
            {
                get
                {
                    if (repSheet == null)
                    {
                        repSheet = new RepositoryUow<Sheet, DatabaseContext>(db);
                    }
                    return repSheet;
                }
            }
            public RepositoryUow<Note, DatabaseContext> RepNote
            {
                get
                {
                    if (repNote == null)
                    {
                        repNote = new RepositoryUow<Note, DatabaseContext>(db);
                    }
                    return repNote;
                }
            }
            public void SaveChanges()
            {
                this.db.SaveChanges();
            }
            private bool disposed = false;
            protected virtual void Dispose(bool disposing)
            {
                if (!this.disposed)
                {
                    if (disposing)
                        this.db.Dispose();
                }
                this.disposed = true;
            }
            public void Dispose()
            {
                Dispose(true); GC.SuppressFinalize(this);
            }

        }
    }

    -----
    DatabaseContext

    namespace TheLastData
    {
        public class DatabaseContext : DbContext
        {
            public DbSet<Sheet> Sheets { get; set; }
            public DbSet<Note> Notes { get; set; }

            public DatabaseContext()
                : base(@"Data Source=(localdb)\v11.0;Initial Catalog=SheetDB;Integrated Security=True")
            {
                Database.SetInitializer(new DatabaseInitializer());
            }
        }
        public class DatabaseInitializer: DropCreateDatabaseAlways<DatabaseContext>
        {
            protected override void Seed(DatabaseContext context)
            {
               using(Uow uow = new Uow()){
                   Sheet sheet1 = new Sheet { Name = "Einkaufzettel", CreationDate = new DateTime(2016, 01, 20) };
                   Note note1 = new Note { NoteName = "Wurst", Priority = 10, Sheet = sheet1 };
                   Note note2 = new Note { NoteName = "Käse", Priority = 1, Sheet = sheet1 };
                   Note note3 = new Note { NoteName = "Tomaten", Priority = 5, Sheet = sheet1 };

                   uow.RepSheet.Create(sheet1);
                   uow.RepNote.Create(note1);
                   uow.RepNote.Create(note2);
                   uow.RepNote.Create(note3);

                   Sheet sheet2 = new Sheet { Name = "Eierzettel", CreationDate = new DateTime(2016, 01, 20) };
                   Note note21 = new Note { NoteName = "asdf", Priority = 10, Sheet = sheet1 };
                   Note note22 = new Note { NoteName = "gfgjf", Priority = 1, Sheet = sheet1 };
                   Note note23 = new Note { NoteName = "456456", Priority = 5, Sheet = sheet1 };

                   uow.RepSheet.Create(sheet2);
                   uow.RepNote.Create(note21);
                   uow.RepNote.Create(note22);
                   uow.RepNote.Create(note23);

                   uow.SaveChanges();
               }
            }
        }
    }

    Sonntag, 5. Juni 2016 21:26

Alle Antworten

  • Hi,

    und jetzt? Erwartest Du, dass wir uns das alles irgendwie nachbauen und dann schauen, wo dein Fehler liegt?

    So läuft das aber nicht.

    Prüf bitte zuerst mal, wo genau die Daten schon fehlen bzw. wo ein Fehler auftritt. Hierfür setzt Du einfach mal verschiedene Breakpoints auf die wichtigsten Codezeilen und startest die Anwendung mit F5 aus Visual Studio heraus.

    Wenn Du das dann hast, melde dich nochmal hier.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 6. Juni 2016 07:09
    Moderator