/// <summary> /// Called by the ASP.NET page framework to notify server controls that use composition-based /// implementation to create any child controls they contain in preparation for posting back or rendering. /// </summary> protected override void CreateChildControls() { base.CreateChildControls(); if (!platformConfiguration.Domains.Select(d => d.Value).Contains(this.Domain)) throw new InvalidProgramException(string.Format("The specified property Domain [{0}] is invalid.", this.Domain)); this.comboBox = new MyControls.ComboBox { ID = "ComboBox", TextField = "OrganizationName", ValueField = "OrganizationId", MinChars = 1, Mode = MyControls.ComboBoxDataSourceModes.Remote, Root = "", ItemSelector = ".search-item", QueryParam = "q", Proxy = DataProxyTypes.HttpProxy, Url = Kit.ResolveAbsoluteUrl("~/Services/OrganizationService.svc/json/search"), XTemplate = @"<tpl for="".""><div class=""search-item""><div class=""subject"">({OrganizationCode}) {OrganizationName}</div>{Description}</div></tpl>", ExtraFields = new string[] { "OrganizationCode", "Description" }, Enabled = this.Enabled }; this.comboBox.Params = new Collection<ComboBoxDynamicDataSourceParamConfiguration> { new ComboBoxDynamicDataSourceParamConfiguration("start") { Value = "0" }, new ComboBoxDynamicDataSourceParamConfiguration("limit") { Value = this.MaxItemCount.ToString() }, new ComboBoxDynamicDataSourceParamConfiguration("sortfield") { Value = "OrganizationName" }, new ComboBoxDynamicDataSourceParamConfiguration("sortDirection") { Value = "ASC" }, new ComboBoxDynamicDataSourceParamConfiguration("domain") { Value = this.Domain }, }; if (this.OrganizationTypeId != Guid.Empty) this.comboBox.Params.Add(new ComboBoxDynamicDataSourceParamConfiguration("orgtypeid") { Value = this.OrganizationTypeId.ToString() }); this.Controls.Add(this.comboBox); }
/// <summary> /// Build data input control for specified field metadata. /// </summary> /// <param name="fieldMetadata"></param> /// <returns></returns> public override ExtensionDataInputControl BuildDataInputControl(IFieldMetadata fieldMetadata) { EnumerationFieldMetadata metadata = fieldMetadata as EnumerationFieldMetadata; WebControls.PlaceHolder placeHolder = new WebControls.PlaceHolder(); if (metadata.SelectionMode == SelectionModes.Single) { string comboBoxId = string.Format(CultureInfo.InvariantCulture, "SLTFM{0}_{1}", WebUtility.ConvertControlId(metadata.Name), metadata.Ordinal > 0 ? metadata.Ordinal : int.MaxValue); this.ComboBoxFieldValue = new ComboBox { ID = comboBoxId, Editable = false, ForceSelection = true, Mode = ComboBoxDataSourceModes.Local, Width = 154 }; foreach (ExtensionModel.SelectionItem selectionItem in metadata.Items.OrderBy(item => item.Name)) this.ComboBoxFieldValue.Items.Add(new WebControls.ListItem(selectionItem.Name, selectionItem.Value) { Selected = selectionItem.Selected }); placeHolder.Controls.Add(this.ComboBoxFieldValue); if (metadata.IsRequired) { LiteralControl requiredLabel = new LiteralControl("<span class=\"required\">*</span>"); placeHolder.Controls.Add(requiredLabel); } return new ExtensionDataInputControl { Control = placeHolder, OccupiedControlCells = 1 }; } else { string checkBoxGroupId = string.Format(CultureInfo.InvariantCulture, "SLTFM{0}_{1}", WebUtility.ConvertControlId(metadata.Name), metadata.Ordinal > 0 ? metadata.Ordinal : int.MaxValue); this.CheckBoxGroupFieldValue = new CheckBoxGroup { ID = checkBoxGroupId, RepeatDirection = System.Web.UI.WebControls.RepeatDirection.Horizontal, RepeatLayout = System.Web.UI.WebControls.RepeatLayout.Flow }; foreach (ExtensionModel.SelectionItem selectionItem in metadata.Items.OrderBy(item => item.Name)) this.CheckBoxGroupFieldValue.Items.Add(new WebControls.ListItem(selectionItem.Name, selectionItem.Value) { Selected = selectionItem.Selected }); placeHolder.Controls.Add(this.CheckBoxGroupFieldValue); if (metadata.IsRequired) { LiteralControl requiredLabel = new LiteralControl("<span class=\"required\">*</span>"); placeHolder.Controls.Add(requiredLabel); } return new ExtensionDataInputControl { Control = placeHolder, OccupiedControlCells = int.MaxValue }; } }
private static ComboBox CreateComboBox(ComboBoxConfiguration controlConfiguration) { ComboBox combobox = new ComboBox { Editable = controlConfiguration.Editable, ForceSelection = controlConfiguration.ForceSelection, MinChars = controlConfiguration.MinChars, SelectedItemChangedCallback = controlConfiguration.OnSelectedIndexChanged }; if (controlConfiguration.DynamicDataSource != null) { combobox.Mode = ComboBoxDataSourceModes.Remote; combobox.Url = Kit.ResolveAbsoluteUrl(controlConfiguration.DynamicDataSource.Url); combobox.Method = controlConfiguration.DynamicDataSource.Method; combobox.Proxy = controlConfiguration.DynamicDataSource.Proxy; combobox.ItemSelector = controlConfiguration.DynamicDataSource.ItemSelector; combobox.QueryParam = controlConfiguration.DynamicDataSource.QueryParam; combobox.Root = controlConfiguration.DynamicDataSource.Root; combobox.TextField = controlConfiguration.DynamicDataSource.TextField; combobox.ValueField = controlConfiguration.DynamicDataSource.ValueField; combobox.XTemplate = controlConfiguration.DynamicDataSource.XTemplate; foreach (ComboBoxDynamicDataSourceParamConfiguration parameter in controlConfiguration.DynamicDataSource.Params) combobox.Params.Add(new ComboBoxDynamicDataSourceParamConfiguration(parameter.Name) { Value = parameter.Value }); } else if (controlConfiguration.StaticDataSource != null) { foreach (ComboBoxItemConfiguration itemConfiguration in controlConfiguration.StaticDataSource) combobox.Items.Add(new ListItem(itemConfiguration.Text, itemConfiguration.Value) { Selected = itemConfiguration.Checked }); } return combobox; }