private PickerEntity GetEntity(SPListItem item) { GenericEntityPickerPropertyBag propertyBag = new GenericEntityPickerPropertyBag(this.CustomProperty); PickerEntity entity = new PickerEntity(); string displayValue = null; try { displayValue = item[propertyBag.LookupFieldInternalName].ToString(); } catch { //field has been deleted } if (displayValue != null && item.Fields.GetFieldByInternalName(propertyBag.LookupFieldInternalName).Type == SPFieldType.Calculated && item[propertyBag.LookupFieldInternalName] != null && item[propertyBag.LookupFieldInternalName].ToString().Contains("#")) { entity.DisplayText = displayValue.ToString().Split('#')[1]; } else { entity.DisplayText = displayValue ?? ""; } entity.Key = item.ID.ToString(); entity.Description = entity.DisplayText; entity.IsResolved = true; return(entity); }
//protected override PickerEntity[] ResolveErrorBySearch(string unresolvedText) //{ // List<PickerEntity> entities = new List<PickerEntity>(); // if (propBag == null) // { // propBag = new GenericEntityPickerPropertyBag(this.CustomProperty); // } // using (SPWeb web = SPContext.Current.Site.OpenWeb(propBag.LookupWebID)) // { // SPList list = web.Lists[propBag.LookupListID]; // SPField field = list.Fields[propBag.LookupFieldInternalName]; // string valueType = field.TypeAsString; // if (field.Type == SPFieldType.Calculated) // { // valueType = "Text"; // } // SPQuery query = new SPQuery(); // query.ViewAttributes = "Scope=\"Recursive\""; // query.Query = // string.Format( // "<Where><Contains><FieldRef Name=\"{0}\"/><Value Type=\"{1}\">{2}</Value></Contains></Where>", // field.InternalName, valueType, unresolvedText); // SPListItemCollection items = list.GetItems(query); // foreach (SPListItem item in items) // { // entities.Add(this.GetEntity(item)); // } // } // return entities.ToArray(); //} public override PickerEntity ValidateEntity(PickerEntity needsValidation) { PickerEntity entity = needsValidation; if (propBag == null) { propBag = new GenericEntityPickerPropertyBag(this.CustomProperty); } if (!string.IsNullOrEmpty(needsValidation.Key)) { try { using (SPWeb web = SPContext.Current.Site.OpenWeb(propBag.LookupWebID)) { SPList list = web.Lists[propBag.LookupListID]; SPField field = null; string fieldType = null; if (needsValidation.Key == needsValidation.DisplayText) { field = list.Fields.GetFieldByInternalName(propBag.LookupFieldInternalName); fieldType = field.TypeAsString; } else { field = list.Fields[SPBuiltInFieldId.ID]; fieldType = field.TypeAsString; } string valueType = field.TypeAsString; if (field.Type == SPFieldType.Calculated) { valueType = "Text"; } string queryString = String.Empty; queryString = string.Format( "<Where><Eq><FieldRef Name=\"{0}\"/><Value Type=\"{1}\">{2}</Value></Eq></Where>", field.InternalName, valueType, needsValidation.Key); SPQuery queryByTitle = new SPQuery(); queryByTitle.Query = queryString; queryByTitle.ViewAttributes = "Scope=\"Recursive\""; SPListItemCollection items = list.GetItems(queryByTitle); if (items.Count == 1) { entity = this.GetEntity(items[0]); } } } catch { } } return(entity); }
protected override void OnInit(EventArgs e) { base.OnInit(e); this.PickerDialogType = typeof(GenericPickerDialog); propBag = new GenericEntityPickerPropertyBag(this.CustomProperty); if (SPContext.Current.FormContext.FormMode != SPControlMode.Invalid) { mode = SPContext.Current.FormContext.FormMode; } else { try { mode = (SPControlMode)int.Parse(Page.Request["mode"]); } catch { } } }
protected override void OnInit(EventArgs e) { propBag = new GenericEntityPickerPropertyBag(CustomProperty); base.OnInit(e); }