Очистка списка DropDown с помощью Invalidate () Outlook Addin C # - PullRequest
0 голосов
/ 27 ноября 2018

Ribbon1.cs с использованием конструктора лент (т.е. без 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();
        }
    }
}

1 Ответ

0 голосов
/ 06 декабря 2018

Я решил это, повозившись с функцией Clear () объекта.пример: resultsDB.Items.Clear ();

...