private void InitFieldsData(string rawValue) { _parents = new List <string>(); if (_fieldsData == null) { _fieldsData = new Dictionary <string, LookupConfigData>(); string[] fieldData = rawValue.Split('|'); if (fieldData.Length > 0) { foreach (string s in fieldData) { if (!string.IsNullOrEmpty(s)) { LookupConfigData c = new LookupConfigData(s); _fieldsData.Add(c.Field, c); if (!string.IsNullOrEmpty(c.Parent)) { _parents.Add(c.Parent.ToLower()); } } } } } }
private void InsertModifiedSPControl2(FormField formField, LookupConfigData lookupData) { if (formField == null) { throw new ArgumentNullException(nameof(formField)); } var fieldLookup = GetFieldLookup(formField); if (!fieldLookup.AllowMultipleValues) { var renderControl = new CascadingLookupRenderControl { LookupData = lookupData, LookupField = fieldLookup, CustomProperty = GetCustomValue(formField, fieldLookup) }; formField.Controls.Add(renderControl); } else { var renderControl = new CascadingMultiLookupRenderControl { LookupData = lookupData, LookupField = fieldLookup, CustomProperty = GetCustomValue(formField, fieldLookup) }; formField.Controls.Add(renderControl); } }
private string GetCustomValue(FormField formField, LookupConfigData lookupData, SPFieldLookup fieldLookup, string fieldType) { if (lookupData == null) { throw new ArgumentNullException(nameof(lookupData)); } if (fieldLookup == null) { throw new ArgumentNullException(nameof(fieldLookup)); } var stringBuilder = new StringBuilder(); stringBuilder.Append("<Data>") .AppendFormat("<Param key=\"SPFieldType\">{0}</Param>", fieldType) .AppendFormat("<Param key=\"ParentWebID\">{0}</Param>", fieldLookup.ParentList.ParentWeb.ID) .AppendFormat("<Param key=\"LookupWebID\">{0}</Param>", fieldLookup.LookupWebId) .AppendFormat("<Param key=\"LookupListID\">{0}</Param>", fieldLookup.LookupList) .AppendFormat("<Param key=\"LookupFieldInternalName\">{0}</Param>", fieldLookup.LookupField) .AppendFormat("<Param key=\"LookupFieldID\">{0}</Param>", fieldLookup.Id) .AppendFormat("<Param key=\"IsMultiSelect\">{0}</Param>", fieldLookup.AllowMultipleValues) .AppendFormat("<Param key=\"ListID\">{0}</Param>", ListId) .AppendFormat("<Param key=\"ItemID\">{0}</Param>", ItemId) .Append(GenerateControlDataForLookupField(formField, fieldLookup.AllowMultipleValues)) .AppendFormat("<Param key=\"Field\">{0}</Param>", lookupData.Field) .AppendFormat("<Param key=\"ControlType\">{0}</Param>", lookupData.Type) .AppendFormat("<Param key=\"Parent\">{0}</Param>", lookupData.Parent) .AppendFormat("<Param key=\"ParentListField\">{0}</Param>", lookupData.ParentListField) .AppendFormat("<Param key=\"Required\">{0}</Param>", fieldLookup.Required) .Append("</Data>"); return(stringBuilder.ToString()); }
public ControlDataBuilder AddParametersForLookupData(LookupConfigData lookupData) { if (lookupData == null) { throw new ArgumentNullException("lookupData"); // (CC-76591, 2018-07-10) nameof not available in C# 5 } return(AddParameter("Field", lookupData.Field) .AddParameter("ControlType", lookupData.Type) .AddParameter("Parent", lookupData.Parent) .AddParameter("ParentListField", lookupData.ParentListField)); }
public LookupConfigData GetFieldData(string fieldIntName) { LookupConfigData result = null; if (_fieldsData != null) { if (_fieldsData.ContainsKey(fieldIntName)) { result = _fieldsData[fieldIntName]; } } return(result); }
private void InsertEPMLiveGenericPickerControl(FormField formField, LookupConfigData lookupData, string fieldType) { if (formField == null) { throw new ArgumentNullException(nameof(formField)); } picker = new GenericEntityEditor(); var fieldLookup = GetFieldLookup(formField); picker.MultiSelect = fieldLookup.AllowMultipleValues; var customValue = GetCustomValue(formField, lookupData, fieldLookup, fieldType); SPFieldLookupValueCollection lookupValCol = null; if (mode == SPControlMode.New) { lookupValCol = GetQueryStringLookupVal(formField); } else { try { lookupValCol = new SPFieldLookupValueCollection(ListItem[fieldLookup.Id].ToString()); } catch (Exception ex) { Trace.WriteLine(ex.ToString()); } } if (lookupValCol?.Count > 0) { var alItems = new ArrayList(); foreach (var field in lookupValCol) { var entity = new PickerEntity { Key = field.LookupId.ToString(), DisplayText = field.LookupValue, IsResolved = true }; alItems.Add(entity); } picker.UpdateEntities(alItems); } picker.CustomProperty = customValue; formField.Controls.Add(picker); }
private void AddTypeAheadFieldControls(SPField fld) { if (mode == SPControlMode.New || mode == SPControlMode.Edit) { // this represents a comma separated list of lookup field internal names to modify EnhancedLookupConfigValuesHelper valueHelper = null; string unprocessedModCandidates = string.Empty; GridGanttSettings gSettings = new GridGanttSettings(this.list); try { string rawValue = gSettings.Lookups; //string rawValue = "Region^dropdown^none^none^xxx|State^autocomplete^Region^Region^xxx|City^autocomplete^State^State^xxx"; valueHelper = new EnhancedLookupConfigValuesHelper(rawValue); } catch { } if (valueHelper == null) { return; } bool isEnhanced = valueHelper.ContainsKey(fld.InternalName); bool isParent = valueHelper.IsParentField(fld.InternalName); if (!isEnhanced && !isParent) { return; } LookupConfigData lookupData = valueHelper.GetFieldData(fld.InternalName); if (isParent && !isEnhanced) { SPFieldLookup lookupFld = fld as SPFieldLookup; if (!lookupFld.AllowMultipleValues) { CascadingLookupRenderControl ctrl = new CascadingLookupRenderControl(); if (lookupData == null) { lookupData = new LookupConfigData(); lookupData.IsParent = true; } ctrl.LookupData = lookupData; ctrl.LookupField = lookupFld; string customValue = "<Data>" + "<Param key=\"SPFieldType\">SPFieldUser</Param>" + "<Param key=\"ParentWebID\">" + lookupFld.ParentList.ParentWeb.ID.ToString() + "</Param>" + "<Param key=\"LookupWebID\">" + lookupFld.LookupWebId.ToString() + "</Param>" + "<Param key=\"LookupListID\">" + lookupFld.LookupList + "</Param>" + "<Param key=\"LookupFieldInternalName\">" + lookupFld.LookupField + "</Param>" + "<Param key=\"LookupFieldID\">" + lookupFld.Id + "</Param>" + "<Param key=\"IsMultiSelect\">" + lookupFld.AllowMultipleValues.ToString() + "</Param>" + "<Param key=\"ListID\">" + this.ListId.ToString() + "</Param>" + "<Param key=\"ItemID\">" + this.ItemId.ToString() + "</Param>" + "<Param key=\"Required\">" + lookupFld.Required + "</Param>" + GenerateControlDataForLookupField(fld, lookupFld.AllowMultipleValues) + "</Data>"; ctrl.CustomProperty = customValue; FormField ff = this.GetFormFieldByField(fld); if (ff != null) { ff.Parent.Controls.AddAfter(ff, ctrl); } } } else if (isParent && isEnhanced) { if (lookupData.Type == GenericType) { #region INSERT EPMLIVE GENERIC PICKER CONTROL picker = new GenericEntityEditor(); SPFieldLookup lookupFld = fld as SPFieldLookup; picker.MultiSelect = lookupFld.AllowMultipleValues; string customValue = "<Data>" + "<Param key=\"SPFieldType\"></Param>" + "<Param key=\"ParentWebID\">" + lookupFld.ParentList.ParentWeb.ID.ToString() + "</Param>" + "<Param key=\"LookupWebID\">" + lookupFld.LookupWebId.ToString() + "</Param>" + "<Param key=\"LookupListID\">" + lookupFld.LookupList + "</Param>" + "<Param key=\"LookupFieldInternalName\">" + lookupFld.LookupField + "</Param>" + "<Param key=\"LookupFieldID\">" + lookupFld.Id + "</Param>" + "<Param key=\"IsMultiSelect\">" + lookupFld.AllowMultipleValues.ToString() + "</Param>" + "<Param key=\"ListID\">" + this.ListId.ToString() + "</Param>" + "<Param key=\"ItemID\">" + this.ItemId.ToString() + "</Param>" + GenerateControlDataForLookupField(fld, lookupFld.AllowMultipleValues) + "<Param key=\"Field\">" + lookupData.Field + "</Param>" + "<Param key=\"ControlType\">" + lookupData.Type + "</Param>" + "<Param key=\"Parent\">" + lookupData.Parent + "</Param>" + "<Param key=\"ParentListField\">" + lookupData.ParentListField + "</Param>" + "<Param key=\"Required\">" + lookupFld.Required.ToString() + "</Param>" + "</Data>"; SPFieldLookupValueCollection lookupValCol = null; if (mode == SPControlMode.New || (this.list.BaseTemplate == SPListTemplateType.DocumentLibrary && !string.IsNullOrEmpty(Page.Request[ModeParam]) && Page.Request[ModeParam] == Upload && mode == SPControlMode.Edit)) { lookupValCol = GetQueryStringLookupVal(fld); } else { try { lookupValCol = new SPFieldLookupValueCollection(this.ListItem[lookupFld.Id].ToString()); } catch { } } if (lookupValCol != null && lookupValCol.Count > 0) { ArrayList alItems = new ArrayList(); PickerEntity entity; foreach (SPFieldLookupValue v in lookupValCol) { entity = new PickerEntity(); entity.Key = v.LookupId.ToString(); entity.DisplayText = v.LookupValue; entity.IsResolved = true; alItems.Add(entity); } picker.UpdateEntities(alItems); } picker.CustomProperty = customValue; FormField ff = this.GetFormFieldByField(fld); if (ff != null) { ff.Parent.Controls.AddAfter(ff, picker); } #endregion } else if (lookupData.Type == ModifiedType) { #region INSERT MODIFIED SP CONTROL SPFieldLookup lookupFld = fld as SPFieldLookup; if (!lookupFld.AllowMultipleValues) { CascadingLookupRenderControl cclrCtrl = new CascadingLookupRenderControl(); cclrCtrl.LookupData = lookupData; cclrCtrl.LookupField = lookupFld; string customValue = "<Data>" + "<Param key=\"SPFieldType\">SPFieldUser</Param>" + "<Param key=\"ParentWebID\">" + lookupFld.ParentList.ParentWeb.ID.ToString() + "</Param>" + "<Param key=\"LookupWebID\">" + lookupFld.LookupWebId.ToString() + "</Param>" + "<Param key=\"LookupListID\">" + lookupFld.LookupList + "</Param>" + "<Param key=\"LookupFieldInternalName\">" + lookupFld.LookupField + "</Param>" + "<Param key=\"LookupFieldID\">" + lookupFld.Id + "</Param>" + "<Param key=\"IsMultiSelect\">" + lookupFld.AllowMultipleValues.ToString() + "</Param>" + "<Param key=\"ListID\">" + this.ListId.ToString() + "</Param>" + "<Param key=\"ItemID\">" + this.ItemId.ToString() + "</Param>" + "<Param key=\"Required\">" + lookupFld.Required + "</Param>" + GenerateControlDataForLookupField(fld, lookupFld.AllowMultipleValues) + "</Data>"; cclrCtrl.CustomProperty = customValue; FormField ff = this.GetFormFieldByField(fld); if (ff != null) { ff.Parent.Controls.AddAfter(ff, cclrCtrl); } } #endregion } } else if (!isParent && isEnhanced) { if (lookupData.Type == GenericType) { #region INSERT EPMLIVE GENERIC PICKER CONTROL picker = new GenericEntityEditor(); SPFieldLookup lookupFld = fld as SPFieldLookup; picker.MultiSelect = lookupFld.AllowMultipleValues; string customValue = "<Data>" + "<Param key=\"SPFieldType\">SPFieldUser</Param>" + "<Param key=\"ParentWebID\">" + lookupFld.ParentList.ParentWeb.ID.ToString() + "</Param>" + "<Param key=\"LookupWebID\">" + lookupFld.LookupWebId.ToString() + "</Param>" + "<Param key=\"LookupListID\">" + lookupFld.LookupList + "</Param>" + "<Param key=\"LookupFieldInternalName\">" + lookupFld.LookupField + "</Param>" + "<Param key=\"LookupFieldID\">" + lookupFld.Id + "</Param>" + "<Param key=\"IsMultiSelect\">" + lookupFld.AllowMultipleValues.ToString() + "</Param>" + "<Param key=\"ListID\">" + this.ListId.ToString() + "</Param>" + "<Param key=\"ItemID\">" + this.ItemId.ToString() + "</Param>" + GenerateControlDataForLookupField(fld, lookupFld.AllowMultipleValues) + "<Param key=\"Field\">" + lookupData.Field + "</Param>" + "<Param key=\"ControlType\">" + lookupData.Type + "</Param>" + "<Param key=\"Parent\">" + lookupData.Parent + "</Param>" + "<Param key=\"ParentListField\">" + lookupData.ParentListField + "</Param>" + "<Param key=\"Required\">" + lookupFld.Required.ToString() + "</Param>" + "</Data>"; SPFieldLookupValueCollection lookupValCol = null; if (mode == SPControlMode.New || (this.list.BaseTemplate == SPListTemplateType.DocumentLibrary && !string.IsNullOrEmpty(Page.Request[ModeParam]) && Page.Request[ModeParam] == Upload && mode == SPControlMode.Edit)) { lookupValCol = GetQueryStringLookupVal(fld); } else { try { lookupValCol = new SPFieldLookupValueCollection(this.ListItem[lookupFld.Id].ToString()); } catch { } } if (lookupValCol != null && lookupValCol.Count > 0) { ArrayList alItems = new ArrayList(); PickerEntity entity; foreach (SPFieldLookupValue v in lookupValCol) { entity = new PickerEntity(); entity.Key = v.LookupId.ToString(); entity.DisplayText = v.LookupValue; entity.IsResolved = true; alItems.Add(entity); } picker.UpdateEntities(alItems); } picker.CustomProperty = customValue; FormField ff = this.GetFormFieldByField(fld); if (ff != null) { ff.Parent.Controls.AddAfter(ff, picker); } #endregion } else if (lookupData.Type == ModifiedType) { #region INSERT MODIFIED SP CONTROL SPFieldLookup lookupFld = fld as SPFieldLookup; if (!lookupFld.AllowMultipleValues) { CascadingLookupRenderControl cclrCtrl = new CascadingLookupRenderControl(); cclrCtrl.LookupData = lookupData; cclrCtrl.LookupField = lookupFld; string customValue = "<Data>" + "<Param key=\"SPFieldType\">SPFieldUser</Param>" + "<Param key=\"ParentWebID\">" + lookupFld.ParentList.ParentWeb.ID.ToString() + "</Param>" + "<Param key=\"LookupWebID\">" + lookupFld.LookupWebId.ToString() + "</Param>" + "<Param key=\"LookupListID\">" + lookupFld.LookupList + "</Param>" + "<Param key=\"LookupFieldInternalName\">" + lookupFld.LookupField + "</Param>" + "<Param key=\"LookupFieldID\">" + lookupFld.Id + "</Param>" + "<Param key=\"IsMultiSelect\">" + lookupFld.AllowMultipleValues.ToString() + "</Param>" + "<Param key=\"ListID\">" + this.ListId.ToString() + "</Param>" + "<Param key=\"ItemID\">" + this.ItemId.ToString() + "</Param>" + "<Param key=\"Required\">" + lookupFld.Required + "</Param>" + GenerateControlDataForLookupField(fld, lookupFld.AllowMultipleValues) + "</Data>"; cclrCtrl.CustomProperty = customValue; FormField ff = this.GetFormFieldByField(fld); if (ff != null) { ff.Parent.Controls.AddAfter(ff, cclrCtrl); } } else { CascadingMultiLookupRenderControl cclrCtrl = new CascadingMultiLookupRenderControl(); cclrCtrl.LookupData = lookupData; cclrCtrl.LookupField = lookupFld; string customValue = "<Data>" + "<Param key=\"SPFieldType\">SPFieldUser</Param>" + "<Param key=\"ParentWebID\">" + lookupFld.ParentList.ParentWeb.ID.ToString() + "</Param>" + "<Param key=\"LookupWebID\">" + lookupFld.LookupWebId.ToString() + "</Param>" + "<Param key=\"LookupListID\">" + lookupFld.LookupList + "</Param>" + "<Param key=\"LookupFieldInternalName\">" + lookupFld.LookupField + "</Param>" + "<Param key=\"LookupFieldID\">" + lookupFld.Id + "</Param>" + "<Param key=\"IsMultiSelect\">" + lookupFld.AllowMultipleValues.ToString() + "</Param>" + "<Param key=\"ListID\">" + this.ListId.ToString() + "</Param>" + "<Param key=\"ItemID\">" + this.ItemId.ToString() + "</Param>" + "<Param key=\"Required\">" + lookupFld.Required + "</Param>" + GenerateControlDataForLookupField(fld, lookupFld.AllowMultipleValues) + "</Data>"; cclrCtrl.CustomProperty = customValue; FormField ff = this.GetFormFieldByField(fld); if (ff != null) { ff.Parent.Controls.AddAfter(ff, cclrCtrl); } } #endregion } } } }