private void fieldLink1_OnClick() { PartnerList list = new PartnerList(); list.OnSave += () => { partnerBindingSource.DataSource = r.GetPartners(); }; list.ShowDialog(); }
public static Control CreatePartners(Indicator indicator, string val, ErrorProvider indicatorErrors, List<DynamicContainer> controlList) { var container = new DynamicContainer { Indicator = indicator }; var cntrl = new ListBox { Name = "dynamicPartners" + indicator.Id.ToString(), Width = 220, Height = 100, Margin = new Padding(0, 5, 20, bottomPadding), SelectionMode = SelectionMode.MultiExtended }; List<Partner> partners = GetAndLoadPartners(cntrl); cntrl.ValueMember = "Id"; cntrl.DisplayMember = "DisplayName"; if (!string.IsNullOrEmpty(val)) { string[] vals = val.Split('|'); cntrl.ClearSelected(); foreach (var av in partners.Where(v => vals.Contains(v.Id.ToString()))) cntrl.SelectedItems.Add(av); } container.GetValue = () => { List<string> selected = new List<string>(); foreach (var i in cntrl.SelectedItems) selected.Add((i as Partner).Id.ToString()); return string.Join("|", selected.ToArray()); }; container.IsValid = () => { if (indicator.IsRequired && indicatorErrors != null) { if (string.IsNullOrEmpty(container.GetValue())) { indicatorErrors.SetError(cntrl, Translations.Required); return false; } else indicatorErrors.SetError(cntrl, ""); } return true; }; cntrl.Validating += (s, e) => { container.IsValid(); }; // Add table container and link controlList.Add(container); cntrl.Margin = new Padding(0, 5, 20, 0); TableLayoutPanel tblContainer = new TableLayoutPanel { AutoSize = true, AutoSizeMode = AutoSizeMode.GrowAndShrink, AutoScroll = true }; tblContainer.RowStyles.Clear(); tblContainer.ColumnStyles.Clear(); int cRow = tblContainer.RowStyles.Add(new RowStyle { SizeType = SizeType.AutoSize }); tblContainer.Controls.Add(cntrl, 0, cRow); int lRow = tblContainer.RowStyles.Add(new RowStyle { SizeType = SizeType.AutoSize }); var lnk = new H3Link { Text = Translations.AddNewItemLink, Margin = new Padding(0, 0, 3, bottomPadding) }; lnk.ClickOverride += () => { PartnerList list = new PartnerList(); list.OnSave += () => { partners = GetAndLoadPartners(cntrl); }; list.ShowDialog(); }; tblContainer.Controls.Add(lnk, 0, lRow); return tblContainer; }