Выполните запрос в цикле foreach и соответствующим образом обновите сетку данных в asp.net c#

#c# #asp.net #datagrid #ado.net

#c# #asp.net #datagrid #ado.net

Вопрос:

У меня есть динамический запрос, в котором я получаю значения из списка. Я выполняю запрос в цикле foreach. Мне нужно соответствующим образом обновить gridview, например, добавив строки. Как этого можно достичь

Я попробовал следующее:-

   foreach (string id in arr)
  {
     StringBuilder sb = new StringBuilder("select(select name from table1 where id =");
     sb.Append(""   id   ")");
     sb.AppendLine("as Component_Name,c.[name] as Scenario_Name, a.[processid] as Component from [action] a inner join [teststep] b on a.[stepid] = b.[stepid] inner join [process] c on b.[ProcessID] = c.[ProcessID] where a.CertifySequence = 0 and a.[processid] = ");
     sb.Append(""   id   "");
     SqlCommand command1 = new SqlCommand(sb.ToString(), connection);
      try
      {
       using (SqlDataAdapter sda = new SqlDataAdapter(command1))
       {
          DataSet ds = new DataSet();
          sda.Fill(ds);
           int rowCount = GridView1.Rows.Count;
           GridView1.DataSource = ds;
           GridView1.DataBind();
           rowCount = GridView1.Rows.Count;
        }
      }
      catch (Exception ex)
      {
         Console.WriteLine(ex.Message);
      }

   }
  

Я не вижу gridview на своей веб-странице. где я ошибаюсь

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

1. Что говорится в сообщении об исключении?

2. Вы перезаписываете источник данных на каждой итерации цикла. С этим кодом вы будете видеть результаты только последней строки в arr .

3. Пожалуйста, попробуйте это, string Ids = строка. Join(«,», arr); StringBuilder sb = new StringBuilder(«select(выберите имя из table1, где идентификатор в»); sb.Append(«( » ids «)»); sb.AppendLine(«как Имя_компонЕнта,c.[name] как имя_сценария, a.[processid] как компонент из [действия] внутреннего соединения [teststep] b на a.[stepid] = b.[ stepid] внутреннее соединение [process] c с b.[ProcessId] = c.[ProcessId] где a.CertifySequence = 0 и a.[processid] в «); sb.Append(«( » ids «)»); а затем используйте этот запрос в командном объекте. нет необходимости в цикле foreach.

4. Я не вижу кода, который открывает соединение.

5. @WilliamXifaras a SqlDataAdapter откроет и закроет соединение для вас.