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

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

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

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

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

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

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


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

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

9   голосов , оценка 4 из 5
Похожие ответы