protected override ActionResult DoWork() { // Заполняем ComboBox серверами. WixComboItem[] servers = (from s in Session.GetService<ISessionServerInfoExtension>().GetServerInfos() select new WixComboItem(s.Name, s.Name)).ToArray(); WixComboBox combo = new WixComboBox(Session, sessionProp.ControlProperty); combo.ClearItems(); if (servers.Length > 0) { combo.AddItems(servers); combo.SelectedValue = servers[0].Value; } else combo.SelectedValue = ""; return ActionResult.Success; }
private void Deleting() { string server; string database; // Получаем имена сервера и базы данных. NameViewConverter.ParseNameView(sessionProp.SelectedDatabase, out server, out database); // Получаем информацию об этой базе. DatabaseInfo info = Session.GetService<ISessionDatabaseInfoExtension>().GetDatabaseInfos().FirstOrDefault(v => v.Server == server && v.Name == database); // Если база данных существовала (т.е. не добавлена пользователем), // то запомним ее в специальном списке существующих баз данных (в элементе управления). // Так как это структура, то если ничего не будет найдено в запросе LINQ, поле Server не будет проинициализирован. if (!string.IsNullOrEmpty(info.Server) && !info.IsNew) { // Для вывода элемента будем использовать имя, версию и признак поддержки. // Для значения сохраним, в виде строки, сериализованный DatabaseInfo в CustomActionData. WixComboBox combo = new WixComboBox(Session, sessionProp.ExistControlProperty); // Здесь аккуратнее, так как ComboBox не отображает некоторые символы. string displayedName = sessionProp.SelectedDatabase + " " + info.Version + (info.IsRequiringUpdate ? "" : " (не поддерживается)"); CustomActionData customActionData = new CustomActionData(); customActionData.AddObject<DatabaseInfo>(typeof(DatabaseInfo).ToString(), info); combo.AddItem(new WixComboItem(displayedName, customActionData.ToString())); // Значение по умолчанию. combo.SelectedValue = combo.Items.Count > 0 ? combo.Items[0].Value : ""; } Session.GetService<ISessionDatabaseInfoExtension>().DeleteDatabaseInfo(server, database); }
private void AddingExisting() { // Для существующего добавления, информацию по базе данных получаем из списка существующих баз. WixComboBox combo = new WixComboBox(Session, sessionProp.ExistControlProperty); string value = combo.SelectedValue; if (value != "") { CustomActionData customActionData = new CustomActionData(value); DatabaseInfo info = customActionData.GetObject<DatabaseInfo>(typeof(DatabaseInfo).ToString()); // Затем данную позицию удаляем из списка сущестующих баз. combo.RemoveItem(combo.SelectedValue); // Значение по умолчанию. combo.SelectedValue = combo.Items.Count > 0 ? combo.Items[0].Value : ""; // Полученную информацию добавляем в сессию. Session.GetService<ISessionDatabaseInfoExtension>().AddDatabaseInfo(info); } }