November Happy Hour will be moved to Thursday December 5th.

Custom page data

Vote:
 
Ønsker å lagre en del custom data sammen med en side. Dette er data som skal lagres i basen og brukes i code-behind. Den skal være persistent og deles av alle besøkende. Den skal ikke være synlig/redigerbar av redaktør/admin. Har ikke lyst til å lage en ny tabell i EPiServer databasen, men om mulig bruke funksjonalitet der for lagring av data. Har sett på EPiServer.Core.RawProperty. Kan denne brukes? Hva er alternativene? Kan selvfølgelig bruke et felt av typen lang streng og lagre som XML i den, men da kan redaktør komme til å tulle til dataene. Hvordan lagrer man properties programatisk? Dette forsøket fungerte ikke. PageData oPage = this.CurrentPage; if (oPage.Property.Exists("custom")) { Response.Write ("Custom:" + oPage.Property["custom"].Value); } else { PropertyLongString ls = new PropertyLongString(); ls.Value = "This is some custom data for page: " + oPage.PageLink.ID.ToString(); oPage.Property.Add("custom", ls); this.CurrentPage = oPage; this.SavePage(); Response.Write ("Property set, page saved"); }
#11966
Jul 09, 2003 9:21
Vote:
 
Vad är det för typ av data som du vill spara och hur ofta kommer du uppdatera detta data. Är det data som är unikt för en och samma sida eller globalt för alla sidor ?
#13452
Jul 09, 2003 10:13
Vote:
 
Data er unik for alle instanser av den gitte sidetypen. Data inneholder informasjon om besøkende som har utført oppgaver på siden. Et eksempel som likner på hva jeg er ute etter er en kalenderside hvor man kan melde seg på underliggende kalenderhendelser. Knytningen mellom bruker og hendelse må lagres i kalendersidens "custom data". Denne brukes så til å liste opp påmeldte brukere på kalendersiden. Kalenderside (oversikt over underliggende hendelser med påmeldingsfunksjon og | utlisting av påmeldte) | +- Kalenderhendelse1 | +- Kalenderhendelse2 | +- Kalenderhendelse3 Hvordan og hvor lagrer jeg enklest slik "custom data"?
#13453
Jul 09, 2003 11:11
Vote:
 
En ide kan kanskje være å lage en ny egenskap som arver fra PropertyLongString og lagre alt som XML. Denne egenskapen rendres som et hiddenfelt - kanskje, da vil den ikke vises for redaktøren. Du må nesten prøve deg fram litt.
#13454
Jul 09, 2003 12:24
Vote:
 
Kan du inte lägga till en formuläregenskap på kalendersidan som används för registrering. Det torde vara det absolut enklaste så får du admin gui på köpet. Ett annat alternativ är personalisering om användarna är påloggande. Andra alternativ är att spara eget data i ett DataSet, du kan sedan antingen spara denna: - På disk som en egen xml fil - EPiServer.PlugIn.PlugInSettings (se exempel i SDK, sparar på per klass basis i databasen) - Egen tabell i databasen
#13455
Jul 10, 2003 10:46
Vote:
 
Har tenkt litt på det. Et spørsmål ang. custom properties. Blir property data sendt til klientene via view state elns? Denne propertien jeg har i tankene kan fort bli noen kB og trends stengt tatt kun på server siden. Selv om jeg hadde håpet å slippe å lege en ny tabell (pga forenkling ved installasjon av denne modulen) så tror jeg at jeg blir nødt til å gjøre det.
#13456
Jul 14, 2003 7:41
Vote:
 
Lagres (sparas) virkelig PlugInSettings i databasen? Hva er nøkkelen som finner igjen dataene? Vedlagte kode lagrer noe dummy data i et DataSet som lagres via PlugInSettings. Ser ut til å fungere greit, men ved restart av server (iisreset) eller rekompilering så går gammel data tapt. DataSet ds = new DataSet(); DataTable table = new DataTable("BookingData"); ds.Tables.Add(table); table.Columns.Add("PageID", System.Type.GetType("System.Int32")); table.Columns.Add("SID", System.Type.GetType("System.Int32")); table.Columns.Add("ResourceID", System.Type.GetType("System.Int32")); table.Columns.Add("From", System.Type.GetType("System.DateTime")); table.Columns.Add("To", System.Type.GetType("System.DateTime")); PlugInSettings.Populate(this.GetType(), ds); Response.Write ("Loaded " + ds.Tables["BookingData"].Rows.Count + " rows
"); DataRow row = table.NewRow(); row["PageID"] = pageID; row["SID"] = 0; row["ResourceID"] = 0; row["From"] = DateTime.Now; row["To"] = DateTime.Now.AddHours(2); table.Rows.Add(row); PlugInSettings.Save(this.GetType(), ds); Response.Write ("Saved " + ds.Tables["BookingData"].Rows.Count + " rows
");
#13457
Jul 14, 2003 14:34
Vote:
 
Vad är this.GetType() ? Tänk på att om du använder detta i codebehind på en ASPX/ASCX kommer denna returnera den automatgenererade klassen av ASP.NET som kommer ärva från din klass. Se tblPlugIn i databasen för med information om var detta sparas, antagligen hittar du en ny rad för varje kompilering som har automatgenererade namn. Ändra koden till PlugInSettings.Populate(typeof(MyCustomClass), ds); samt även Save.. PlugInSettings.Save(typeof(MyCustomClass), ds);
#13458
Jul 15, 2003 8:52
Vote:
 
Takk, nå virker det som ønsket.
#13459
Jul 16, 2003 9:12
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.