#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
откроет и закроет соединение для вас.