如何在不使用提交按钮的情况下保存表单(页面上还有另一个触发器可用于运行保存代码)。表单永远不会显示给用户,除非有更明智的方法,否则我只需要将其保存到营销者数据库的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.
修改字段后,我当然要保存它。
要做的方法是首先获取表单的副本,使用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
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句