c# – 以编程方式为营销人员保存Sitecore Web表单
发布时间:2020-12-16 02:00:28 所属栏目:百科 来源:网络整理
导读:如何在不使用提交按钮的情况下保存表单(我在页面上有另一个可用于运行保存代码的触发器).表单永远不会显示给用户,我只需要将其保存到营销人员数据库的Web表单中,除非当然有更聪明的方法. 我可以很好地使用它 Sitecore.Forms.Core.Data.FormItem form = Sitec
如何在不使用提交按钮的情况下保存表单(我在页面上有另一个可用于运行保存代码的触发器).表单永远不会显示给用户,我只需要将其保存到营销人员数据库的Web表单中,除非当然有更聪明的方法.
我可以很好地使用它 Sitecore.Forms.Core.Data.FormItem form = Sitecore.Forms.Core.Data.FormItem.GetForm(formID); 但是,我想 >更改表单字段中的数据 (即类似的东西) form.Fields["Name"] = "Test name"; // this wont work,I dont know how to access the field's value before I store it. >将表单数据保存在sitecore中的营销人员项目数据库的Web表单中. 在我修改了字段后,我当然希望保存它. 解决方法
这样做的方法是首先获取表单的副本,使用AdaptedControlResult列表设置其字段并使用InsertForm保存它.这样它最终会在WFFM的数据表中正确结束.
代码中使用的customerInfo来自CartHelper,但它可以是任何东西. 码: string formID = "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"; DataUri uri = new DataUri(new ID(formID)); Sitecore.Data.Items.Item formItem = Sitecore.Context.Database.GetItem(uri); // if the item exists,run through all the known fields and add the values from the customerinfo into them. if (formItem != null) { List<AdaptedControlResult> acrList = new List<AdaptedControlResult>(); Sitecore.Data.Items.Item[] fieldItems = formItem.Axes.GetDescendants(); foreach (Sitecore.Data.Items.Item fieldItem in fieldItems) //.Where(x => x.TemplateName == "Field")) { if (fieldItem.Name == "E-mail") { acrList.Add(new AdaptedControlResult(new ControlResult(fieldItem.Name,System.Web.HttpUtility.UrlDecode(customerInfo.Email),string.Empty) { FieldID = fieldItem.ID.ToString(),FieldName = fieldItem.Name,Value = System.Web.HttpUtility.UrlDecode(customerInfo.Email) },true)); continue; } // same for all other fields. } // save data if (acrList.Count > 0) { AdaptedResultList arl = new AdaptedResultList(acrList); try { Sitecore.Forms.Data.DataManager.InsertForm(formItem.ID,arl,Sitecore.Data.ID.NewID,null); } catch (Exception ex) { // Log data here } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |