internal static List <ListItem> GetAvailableValues(FilteredLookupField f, HttpContext ctx) { List <ListItem> _v = null; SPListItemCollection items = null; Guid fId = new Guid(f.LookupField); SPSite s = SPControl.GetContextSite(ctx); SPWeb lookupWeb = s.OpenWeb(f.LookupWebId); SPList lookupList = lookupWeb.Lists[new Guid(f.LookupList)]; try { if (f.QueryFilter != null) { items = lookupList.GetItems(f.QueryFilter); } } catch { } if (items == null) { items = lookupList.Items; } if ((items != null && items.Count > 0)) { _v = items .Cast <SPListItem>() .Where(e => e[fId] != null) .Select(e => new ListItem(( e.Fields[fId].GetFieldValueAsText(e[fId])), e.ID.ToString())) .ToList <ListItem>(); } return(_v); }
public void InitializeWithField(SPField field) { EnsureChildControls(); FilteredLookupField _f = null; try { _f = field as FilteredLookupField; } catch { } if (_f != null) { // this bit only happens when field is not null if (!IsPostBack) { cbxAllowMultiValue.Checked = _f.AllowMultipleValues; txtQueryFilter.Text = (!string.IsNullOrEmpty(_f.QueryFilterAsString)) ? SPHttpUtility.HtmlDecode(_f.QueryFilterAsString) : string.Empty; cbxRecursiveFilter.Checked = _f.IsFilterRecursive; TargetWebId = _f.LookupWebId.ToString(); TargetListId = _f.LookupList; TargetColumnId = _f.LookupField; TargetListViewId = _f.ListViewFilter; } } // this bit must always happen, even when field is null if (!IsPostBack) { SetTargetWeb(); lblTargetWeb.Text = listTargetWeb.SelectedItem.Text; lblTargetList.Text = listTargetList.SelectedItem.Text; SetControlVisibility(); } }
protected override void CreateChildControls() { // 19 items is limit for switching from // standard dropdown to SharePoint fancy dropdown if (base.Field != null && base.ControlMode != SPControlMode.Display) { if (!this.ChildControlsCreated) { this.Controls.Clear(); this.Controls.Add(new LiteralControl("<span dir=\"none\">")); FilteredLookupField field = base.Field as FilteredLookupField; if (_availableItems != null && _availableItems.Count > 19 && IsExplorerOnWin()) { CreateCustomSelect(); } else { CreateStandardSelect(); } this.Controls.Add(new LiteralControl("<br /></span>")); } } }
public void OnSaveChange(SPField field, bool isNewField) { FilteredLookupField _f = null; try { _f = field as FilteredLookupField; } catch { } if (_f != null) { string s = txtQueryFilter.Text; bool rec = cbxRecursiveFilter.Checked; string view = (listTargetListView.SelectedIndex > -1) ? listTargetListView.SelectedItem.Value : string.Empty; string col = listTargetColumn.SelectedItem.Value; string list = listTargetList.SelectedItem.Value; bool multi = cbxAllowMultiValue.Checked; if (isNewField) // can only change list and web if new field { SPSite _site = SPControl.GetContextSite(this.Context); SPWeb _web = _site.OpenWeb(new Guid(listTargetWeb.SelectedItem.Value)); _f.LookupWebId = _web.ID; _f.LookupList = list; } if (rdFilterOption.SelectedItem.Value == "Query") { _f.QueryFilterAsString = (!string.IsNullOrEmpty(s)) ? SPHttpUtility.HtmlEncode(s) : ""; _f.ListViewFilter = ""; } else if (rdFilterOption.SelectedItem.Value == "ListView") { _f.ListViewFilter = (!string.IsNullOrEmpty(view)) ? view : ""; _f.QueryFilterAsString = ""; } _f.LookupField = col; _f.IsFilterRecursive = rec; _f.UnlimitedLengthInDocumentLibrary = cbxUnlimitedLengthInDocLib.Checked; _f.CountRelated = IsCountRelated(_f.LookupField, _f.LookupList); _f.AllowMultipleValues = (_f.CountRelated) ? false : multi; } }
protected override void CreateChildControls() { if (this.Field != null && this.ControlMode != SPControlMode.Display) { if (!this.ChildControlsCreated) { FilteredLookupField field = this.Field as FilteredLookupField; base.CreateChildControls(); MultiLookupPicker = (GroupedItemPicker)TemplateContainer.FindControl("MultiLookupPicker"); BuildAvailableItems(ref MultiLookupPicker); SelectCandidate = (SPHtmlSelect)TemplateContainer.FindControl("SelectCandidate"); SelectResult = (SPHtmlSelect)TemplateContainer.FindControl("SelectResult"); AddButton = (HtmlButton)TemplateContainer.FindControl("AddButton"); RemoveButton = (HtmlButton)TemplateContainer.FindControl("RemoveButton"); } } }