using System; using System.Diagnostics; using System.IO; using $safeprojectname$.Controls; namespace $safeprojectname$ { //Code behind for DVDCollectionDataset that defines user-owned utility functions for working with this dataset //and interactions with the custom DVD object returned by Amazon.com //Uses partial classes to compile one dataset/datatable type that combines designer code with user code. //All user owned code for the dataset/datatable should be added to this file. public partial class DVDCollectionDataSet { public partial class DVDsDataTable { /// /// Overrides default new row behavior to ensure that a unique ID is created for each record. /// /// Unique ID's are needed to properly look up rows and avoid conflicts with similar rows. IDs will be GUIDs. internal void dvdsDataTable_TableNewRow(object sender, System.Data.DataTableNewRowEventArgs e) { DVDsRow newDVDRow = e.Row as DVDsRow; if (newDVDRow != null) { newDVDRow.ID = Guid.NewGuid().ToString(); newDVDRow.Title = "[New row - select to enter details]"; } } /// /// Overload that adds a DVD row to the datatable by passing in a custom DVD object. /// /// Custom DVD object that should be converted and added to the datatable public void AddDVDsRow(DVD myDVD) { AddDVDsRow(this.DVDsRowFromDVDObject(myDVD)); } /// /// Utility function to return a new DVDRow object converted from a custom DVD object. /// /// Custom DVD object to be converted to DVDRow. /// New DVDRow object initialized by the DVD object parameter. /// New DVDRow will be created in the context of this particular datatable instance. public DVDsRow DVDsRowFromDVDObject(DVD myDvd) { //objects used to store new row value DVDsRow dvdRow; //create a new row in the context of this datatable: "Me" dvdRow = NewDVDsRow(); //try to convert the DVD object to a DVDRow try { dvdRow.Title = myDvd.Title; dvdRow.Actors = myDvd.Actors; dvdRow.Director = myDvd.Directors; dvdRow.Rated = myDvd.Rating; dvdRow.YearReleased = myDvd.ReleasedDate; dvdRow.UPC = myDvd.UPC; dvdRow.ImageLink = myDvd.ImageUrl; dvdRow.WebPageLink = myDvd.WebPageUrl; dvdRow.Description = myDvd.Description; //initialize user-set fields; these are not converted from input dvdRow.MyRating = -1; dvdRow.Comments = ""; dvdRow.Genre = ""; //do more problematic conversions: // //convert length value from string to integer if (myDvd.RunningTime.Length > 0) { dvdRow.Length = Int32.Parse(myDvd.RunningTime); } else { dvdRow.Length = 0; } //convert image to Byte array to be saved in database if (myDvd.ImageCache != null) { using (MemoryStream memStream = new MemoryStream()) { myDvd.ImageCache.Save(memStream, myDvd.ImageCache.RawFormat); dvdRow.ImageBinary = memStream.GetBuffer(); } } } catch (Exception ex) { Debug.WriteLine("An error occurred trying to convert DVD object to DVDTableRow. "); Debug.WriteLine(ex); } return dvdRow; } } } }