Очистка выпадающего списка с помощью invalidate() outlook addin C#
Ribbon1.cs с использованием Ribbon Designer (т. е. без XML)
Я пытаюсь очистить содержимое выпадающего списка перед повторным заполнением списка новыми данными.
Я пробовал использовать Invalidate() в нескольких местах, но не могу заставить его работать.
Поток Аддина выглядит следующим образом:
Копирование текста в буфер обмена -> работает
Нажмите кнопку Поиск -> работает
Получение новых данных из базы данных с помощью текста из буфера обмена -> работает
Очистить выпадающий список -> не работает
Заполните выпадающий список данными. -> действительно работает, но добавляет элементы в выпадающий список вместо того, чтобы сначала очистить его
Заранее спасибо
using System; using System.Collections.Generic; using System.IO; using System.Data; using System.Data.Odbc; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; using Office = Microsoft.Office.Core; using Outlook = Microsoft.Office.Interop.Outlook; using Microsoft.Office.Tools.Ribbon; namespace MSTEST { public partial class Ribbon1 : Office.IRibbonExtensibility { private Office.IRibbonUI ribbon; private void Ribbon1_Load(object sender, RibbonUIEventArgs e) { this.ribbon = RibbonUI; } private void eventDB(object sender, RibbonControlEventArgs e) { RibbonUI.Invalidate(); //this.ribbon.InvalidateControl("resultsDB"); string getTextFromClipboard = Clipboard.GetText(); string queryString = "select distinct file_path as FP, case_id as CS, date_added from documents CONTAINS(documents.file_path, '" + getTextFromClipboard + "') group by case_id,file_path, datE_added order by Date_Added DESC"; using (OdbcConnection odbcConnection = new OdbcConnection("dsn=Needles;UID=dba;PWD=sql;")) { OdbcCommand command = new OdbcCommand(queryString, odbcConnection); try { odbcConnection.Open(); OdbcDataReader reader = command.ExecuteReader(); // ribbon.InvalidateControl("resultsDB"); int i = 0; while (reader.Read()) { // Being DropDown Populate RibbonDropDownItem item = this.Factory.CreateRibbonDropDownItem(); item.Label = reader["FP"].ToString(); resultsDB.Items.Add(item); //MessageBox.Show(reader["CS"].ToString()); // End DropDown Populate i = i + 1; } reader.Close(); odbcConnection.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } public string GetCustomUI(string RibbonID) { throw new NotImplementedException(); } } }
Что я уже пробовал:
Я перепробовал все виды вариаций ленты.Аннулировать. Я думаю, что это может быть связано с тем, как outlook теряет фокус на ленте после нажатия кнопки "Поиск".