Проблема с ListView в C#

#c#

#c#

Вопрос:

У меня проблема в listview.В моем listview у меня есть пять столбцов (question_number, question_text, start_time, end_time, status). первые четыре столбца будут извлекать данные из базы данных. как только данные будут введены, я должен сравнить время начала и с текущим временем. как только время начала превысит текущее время, я должен обновить столбец статуса как истекший. в противном случае я должен сказать, что срок действия не истек.

Я прикрепил код, для чего я это сделал. Я не знаю, как обновить статус в столбце status.Пожалуйста, кто-нибудь мне поможет. заранее спасибо.

      public void GetData()
       {
        try
        {
            myConnection = new SqlConnection(@"User ID=sa;Password=password123;Initial Catalog=dish;Persist Security Info=True;Data Source=ENMEDIA-CCDDFE5ENMEDIA");
            //myConnection.Open();
            //SqlDataReader dr = new SqlCommand("SELECT question_text,question_id FROM otvtbl_question ", myConnection).ExecuteReader();

           // listView1.Columns.Clear();
            listView1.Items.Clear();

            myConnection.Open();
            String MyString1 = string.Format("SELECT question_id,question_text,start_time,end_time FROM otvtbl_question");

            SqlCommand cmd = myConnection.CreateCommand();
            cmd.CommandText = MyString1;

            dr = cmd.ExecuteReader();

            //Adding The Column Name From The DataBase 
            for (int i = 0; i < dr.FieldCount; i  )
            {
                ColumnHeader ch = new ColumnHeader();
                ch.Text = dr.GetName(i);
                //listView1.Columns.Add(ch);
            }


            ListViewItem itmX;
            //Adding the Items To The Each Column
            while (dr.Read())
            {
                itmX = new ListViewItem();
                itmX.Text = dr.GetValue(0).ToString();

                for (int i = 1; i < dr.FieldCount; i  )
                {
                    itmX.SubItems.Add(dr.GetValue(i).ToString());
                }
                listView1.Items.Add(itmX);
            }

            dr.Close();
            myConnection.Close();
          }
           catch (Exception ex)
        {
            //Error Message While Fetching
            MessageBox.Show("Error While Fetching the data From the DataBase"   ex);
        }

        finally
        {
            //Closing The Connection
            if (dr != null)
                dr.Close();

            if (myConnection.State == ConnectionState.Open)
                myConnection.Close();

        }
  

Комментарии:

1. Примите ответы на все ваши предыдущие заданные вопросы. итак, ваше согласие выше, чем сейчас.

2. я знаю, как сравнить start_time с текущим временем и обновить столбец status в соответствии. Я могу отображать другие столбцы, используя приведенный выше код, отличный от столбца status. можете ли вы мне помочь, пожалуйста

Ответ №1:

Что-то вроде этого?

             while (dr.Read())
            {
                ...
                listView1.Items.Add(itmX);

                if (dr.GetDateTime(2) > dr.GetDateTime(3))
                {
                    itmX.SubItems.Add("Expired");
                }
            }
  

Комментарии:

1. сначала извините за поздний повтор. который вы опубликовали, почти в порядке. Но внутри условия if элемент, срок действия которого истек, должен быть добавлен в последний столбец, т. е. столбец статуса. добавит ли это значение expired в столбец status.

2. @bharathi — если вам нужно изменить данный столбец, просто используйте itmX.SubItems[n].Text = "Expired" ;