At the moment I’m adding some functionallity to vinsprit.se, so that a visitor can add products, that aren’t in the regular assortment, to a cart and by a simple click send this cart by fax to the closest Systembolag. A pretty nice feature. The customer also wanted to store the orderinfo in episerver if something goes wrong, so I thought that you must be able to do that with XForms. And yes, it was very simple.
First of all I added a “XForms form”-property to the pagetype. Then I made an empty Form. The rest is handled from code behind. The following example works both with 4.6 and CMS 5. Hopefully in CMS 5 R2 aswell.. 🙂
// Get guid for the form and creates instance XForm form = XForm.CreateInstance(new Guid((String)CurrentPage["XFormPropertyName"])); // This is where data is stored XFormData form_data = form.CreateFormData(); //We want this info related to the order page form_data.PageId = CurrentPage.PageLink.ID; // We want it saved in the database form_data.ChannelOptions = ChannelOptions.Database; // Here we add the values. form_data.SetValue("Key 1", "some value"); form_data.SetValue("Key 2", "some other value"); // and saves it form_data.Send();
Pretty nice if you want to avoid creating your own sql-table or some other way to store data.