Free.mind Ответов: 2

Как запросить, где все элементы в listview в rdlc


Я пытаюсь создать отчет rdlc со всеми itmcode = элемент1 по каждому элементу.текст

Код работает нормально но возвращает только один элемент из элементов listview а не все из них

Как получить все предметы, а не один ?

Что я уже пробовал:

data1DBDataSetTableAdapters.itmscat1TableAdapter adapter = new data1DBDataSetTableAdapters.itmscat1TableAdapter();
        data1DBDataSet.itmscat1DataTable table = new data1DBDataSet.itmscat1DataTable();
        foreach (ListViewItem item1 in listView2.Items)
        {
           item1int = Convert.ToInt32(item1.Text);
           adapter.FillBy3(table, item1int));
        }

        ReportDataSource mynewdatasource = new ReportDataSource("DataSet1", (DataTable)table);
        this.reportViewer1.LocalReport.DataSources.Clear();
        this.reportViewer1.LocalReport.DataSources.Add(mynewdatasource);
        this.reportViewer1.LocalReport.Refresh();
        this.reportViewer1.RefreshReport();

2 Ответов

Рейтинг:
10

Richard Deeming

Предполагая, что вы хотите один DataTable с результатами для всех элементов списка:

var adapter = new data1DBDataSetTableAdapters.itmscat1TableAdapter();
var table = new data1DBDataSet.itmscat1DataTable();
foreach (ListViewItem item1 in listView2.Items)
{
    var tempTable = new data1DBDataSet.itmscat1DataTable();
    item1int = Convert.ToInt32(item1.Text);
    adapter.FillBy3(tempTable, item1int);
    table.Merge(tempTable);
}

var mynewdatasource = new ReportDataSource("DataSet1", (DataTable)table);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(mynewdatasource);
reportViewer1.LocalReport.Refresh();
reportViewer1.RefreshReport();
объект DataTable.Метод Слияния (System.Data) | Microsoft Docs[^]


Free.mind

Ричард большое спасибо я никогда не думал об этой технике и она работает как заклинание

Рейтинг:
1

RickZeeland

Смотрите ответ здесь: Как передать несколько наборов данных в отчет с помощью c#.net[^]

Или попробуйте что-нибудь вроде этого:

DataTable dt = new DataTable();
dt.Columns.Add("item1int ", typeof(int));
dt.Rows.Add(new object[] { Convert.ToInt32(item1.Text) });


Free.mind

Это решение связано с добавлением нескольких наборов данных а не с тем что мне нужно