Отображать выбранные строки в сетке просмотра во всплывающем окне с уведомлением - PullRequest
0 голосов
/ 15 января 2020

с использованием c#, winforms, sqlite

datagridview имеет столбцы name, startdate, expirationdate

У меня есть приложение, в котором пользователь нажимает кнопку, событие click принимает дату истечения срока действия в одном из столбцов и минус это от сегодняшней даты, которая затем заставит светиться строку, если число <61 (должно быть меньше). В основном это выделяет строки, где дата близка к сегодняшней дате. Теперь я хочу всплывающее окно, которое показывает столбцы «имя» строк, которые были выделены, но я не уверен, как поступить. Если я прав, мне нужно положить его в форму для l oop и использовать случай if, может быть? </p>

        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            string test = ds.Tables[0].Rows[i]["ExpirationDate"].ToString();
            if(test != "")
            {
                DateTime expiraryDate = Convert.ToDateTime(test); //convert string to datetime
                DateTime itoday = DateTime.Today; //get current date
                DateTime today = Convert.ToDateTime(itoday); //convert string to datetime
        //        String daysdiffstring = (expiraryDate - today).TotalDays.ToString();

                int daysdiffstring = expiraryDate.Subtract(today).Days;
                string daysdifffstring = Convert.ToString(daysdiffstring);

                int daysdiff = Convert.ToInt32(daysdiffstring);
                if (daysdiff < 61 && daysdiff >= -1)             //2 months close to expiry dangerous
                {
                    dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
                        dataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Black;
                    }
         }

        PopupNotifier popup = new PopupNotifier();
        popup.Image = Properties.Resources.information_icon;
        popup.TitleText = "Notification on ending certificates";
        popup.ContentText = "hello world";                         //replace this
        popup.Popup();

1 Ответ

0 голосов
/ 15 января 2020

Вам необходимо добавить соответствующий код в оператор for и if.

for (int i = 0; i<ds.Tables[0].Rows.Count; i++)
     {
        var nearToExpiryUsers = new List<string>();
        ----
        Your code
        ----

       if (daysdiff< 61 && daysdiff >= -1)      //2 months close to expiry dangerous
                {
                    dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Red;
                    dataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Black;
                    nearToExpiryUsers.Add(ds.Tables[0].Rows[i]["name"]);
                }
     }

Затем вам нужно перебрать каждую строку в nearToExpiryUsers для создания отформатированной строки (согласно вашему выбору), а затем установить это отформатированная строка в popup.ContextText.

  foreach (var expiredName in expiredNames)
        {
            popup.ContentText += expiredName + Environment.NewLine;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...