.NET 4.x Отрисовка данных в ListView по каждому элементу List - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Срочно нужна подсказка, коллеги. Не могу найти ответ. Есть коллекция строк, по каждому элементу этой коллекции нужно пройтись foreach'ем и передать данные в ListView на странице (эти данные собираются из БД). Сейчас проблема в том, что данные в ListView я вижу только по последнему элементу коллекции. Т.е. таблица, скорее всего *перерисовывается* с каждой итерацией.
Листинг программы
  1. SqlDataSource1.SelectCommand = "SELECT ID, Comment FROM Parameters WHERE "
  2. + "HeatNumber=@Mass ORDER BY ID DESC";
  3. foreach (string heat in heatCollection)
  4. {
  5. SqlDataSource1.SelectParameters["Mass"].DefaultValue = heat;
  6. SqlDataSource1.Select(DataSourceSelectArguments.Empty);
  7. SqlDataSource1.DataBind();
  8. }
  9. ListView1.DataBind();
ASPX:
Листинг программы
  1. <asp:SqlDataSource ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:LocalSqlServer %>" DataSourceMode="DataSet" runat="server">
  2. <SelectParameters>
  3. <asp:Parameter Name="Mass" Type="String" Direction="Input" />
  4. </SelectParameters>
  5. </asp:SqlDataSource>
До этого пробовал другой SQL запрос, содержащий "IN (@param)" (передавал в строке многозначный параметр через запятую), но успеха также не добился. Выручайте!
Если поможет - шаблон айтемов в ASPX указан так:
Листинг программы
  1. <td><asp:Label ID="txt" runat="server" Text='<%# Eval("Comment") %>'></asp:Label></td>
Больше, вроде бы, уточнять нечего. Казус ситуации в том, что если прописать запрос с конкретными параметрами прямо в ASPX, то вывод информации правильный - по всем элементам в коллекции параметра:
Листинг программы
  1. <asp:SqlDataSource ID="SqlDataSource1"
  2. ConnectionString="<%$ ConnectionStrings:LocalSqlServer %>"
  3. DataSourceMode="DataSet" runat="server"
  4. SelectCommand="SELECT ID, прочие поля, Comment FROM Parameters WHERE HeatNumber IN ('1/0013/16L','1/0012/16L','1/0011/16L')
  5. ORDER BY ID DESC">
Хотя параметр (строка "1/0013/16L','1/0012/16L','1/0011/16L") абсолютно идентичен тому, что я передаю в code behind'е...

Решение задачи: «.NET 4.x Отрисовка данных в ListView по каждому элементу List»

textual
Листинг программы
  1.  
  2. var parameters = new List<string>(heatCollection.Count);
  3. foreach (string heat in heatCollection)
  4. {
  5.       string parameter = "Mass" + (parameters.Count+1);
  6.       parameters.Add(parameter);
  7.       SqlDataSource1.SelectParameters.Add(parameter, heat);
  8. }
  9. SqlDataSource1.SelectCommand = string.Format("SELECT ID, Comment FROM Parameters WHERE HeatNumber IN ({0}) ORDER BY ID DESC", string.Join(",", parameters));
  10. SqlDataSource1.Select(DataSourceSelectArguments.Empty);
  11. SqlDataSource1.DataBind();
  12. ListView1.DataBind();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы