private async void Profiles_ComboBox_ItemClicked(object sender, ComboBoxItemContainer item) { if (await ConfirmLeave((FrameworkElement)sender) == false) { return; } var ctx = new SaveData.SaveData(); var profile = (SaveData.Models.Profile)item.DataContext; var panelButtons = ctx.PanelButtons.Where(p => p.Profile.Id == profile.Id); var formData = new EditorFormData { Profile = profile, PanelButtons = panelButtons }; LoadProfile(formData); _hasUnsavedChanges = false; Profiles_ComboBox.Close(); BlockNavigator.NavigateBack((FrameworkElement)sender); }
/// <summary> /// Binds grid with properties. /// </summary> private void BindProperties() { // Clear rows grdUserProperties.Rows.Clear(); // Create list of AD properties List <ComboBoxItemContainer> attributeList = new List <ComboBoxItemContainer>(); switch (ImportProfile.BindingEditorMode) { case BindingEditorMode.Simple: foreach (string attr in ADSimpleUserProperties) { string attrName = ResHelper.GetString("ADAttribute_" + attr); if (attr != ADProvider.NoneAttribute) { attrName += " (" + attr + ")"; } ComboBoxItemContainer container = new ComboBoxItemContainer(attrName, attr); attributeList.Add(container); } break; case BindingEditorMode.Advanced: // Add 'none' item attributeList.Add(new ComboBoxItemContainer(ResHelper.GetString("ADAttribute_" + ADProvider.NoneAttribute), ADProvider.NoneAttribute)); // Add non-culture-specific attributes attributeList.AddRange(ADProvider.GetUserAttributes().Select(attribute => new ComboBoxItemContainer(attribute, attribute))); break; } // Sort attributes alphabetically attributeList.Sort((c1, c2) => CMSString.Compare(c1.DisplayMember, c2.DisplayMember, StringComparison.OrdinalIgnoreCase)); if (CMSUserProperties.Count == 0) { // Load user data class DataClassInfo dci = DataClassInfoProvider.GetDataClassInfo(UserInfo.OBJECT_TYPE); // Load columns from the user data class LoadColumns(dci); // Load user settings data class dci = DataClassInfoProvider.GetDataClassInfo(UserSettingsInfo.OBJECT_TYPE); // Load columns from the user settings data class LoadColumns(dci); // Sort properties by name CMSUserProperties.Sort(); } // Create default preselection if (ImportProfile.UserProperties.Count == 0) { ImportProfile.UserProperties.Add("FirstName", "givenName"); ImportProfile.UserProperties.Add("MiddleName", "middleName"); ImportProfile.UserProperties.Add("LastName", "sn"); ImportProfile.UserProperties.Add("Email", "mail"); } foreach (string property in CMSUserProperties) { // Create new row DataGridViewRow dr = new DataGridViewRow(); // Create cell with CMS property DataGridViewTextBoxCell cmsProp = new DataGridViewTextBoxCell(); cmsProp.Value = property; // Create cell with AD attributes DataGridViewComboBoxCell adAttr = new DataGridViewComboBoxCell(); // Bind combobox cell adAttr.DisplayMember = "DisplayMember"; adAttr.ValueMember = "ValueMember"; adAttr.DataSource = attributeList; // Preselect values based on import profile if (ImportProfile.UserProperties.ContainsKey(property)) { string val = ImportProfile.UserProperties[property]; if (!chkAllAttributes.Checked && !ADSimpleUserProperties.Contains(val)) { // Add values selected in advanced mode attributeList.Add(new ComboBoxItemContainer(val, val)); } adAttr.Value = val; } else { // Set empty mapping adAttr.Value = ADProvider.NoneAttribute; } // Add both cells to datarow dr.Cells.Add(cmsProp); dr.Cells.Add(adAttr); // Set CMS property read-only cmsProp.ReadOnly = true; // Add row to DataGridView grdUserProperties.Rows.Add(dr); } }