XtraReport распечатать все из набора данных. Я хочу, чтобы печать была выбрана только в datagridview

#c# #visual-studio #devexpress #windows-forms-designer #xtrareport

#c# #visual-studio #devexpress #windows-forms-designer #xtrareport

Вопрос:

Мне нужен код для выбранного в datagridview и после выбранной печати в XtraReport. Таким образом, я выбираю выбранные строки, что мне нужно дальше?

 for (int i = 0; i < dataGridView1.Rows.Count; i  )
            {
                bool isCellChecked = Convert.ToBoolean(dataGridView1.Rows[i].Cells[0].Value);
                if (isCellChecked == true)
                {

                    var allCheckedRows = this.dataGridView1.Rows.Cast<DataGridViewRow>()
                               .Where(row => (bool?)row.Cells[0].Value == true)
                               .ToList();
  

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

1. Вы уже разработали отчет? Каков источник данных для вашего DataGridView? Если он привязан к списку<T>, вы также можете привязать отчет к тому же списку<T> . Если вы используете элемент управления DevExpress XtraGrid, вы можете использовать его встроенную функциональность для печати / экспорта только выбранных строк.

2. Да, у меня есть отчет. Источник Datagridview взят из набора данных. У меня нет списка<T>

3. Затем вам нужно создать набор данных из отфильтрованных строк и использовать его также для источника данных XtraReport.

4. Хорошо, это звучит просто, но мне сложно это сделать. У меня уже есть набор данных, может быть, вы имеете в виду в коде создание нового набора данных?

5. У вас есть коллекция DataGridViewRows, но вам действительно нужен DataTable / DataSet, к которому XtraReport может быть привязан к данным. Можете ли вы преобразовать эту коллекцию в DataTable / DataSet?

Ответ №1:

Это решение отлично работало для меня в WinForms …

Чтобы выбрать видимый в Gridview:

     private DataTable GetVisible()
    {
        //Export GRIDVIEW to DataTable
        DataTable DT = new DataTable();
        foreach (GridColumn column in gridView1.VisibleColumns)
        {
            DT.Columns.Add(column.FieldName, column.ColumnType);
        }
        for (int i = 0; i < gridView1.DataRowCount; i  )
        {
            DataRow row = DT.NewRow();
            foreach (GridColumn column in gridView1.VisibleColumns)
            {
                row[column.FieldName] = gridView1.GetRowCellValue(i, column);
            }
            DT.Rows.Add(row);
        }
        return DT;
    }
  

Для отображения формы предварительного просмотра:

         private void FullBtnView_Click(object sender, EventArgs e)
    {
        Reports.FullList Rep = new Reports.FullList
        {
            DataSource = GetVisible()
        };
        using (ReportPrintTool printTool = new ReportPrintTool(Rep))
        {                
            // Invoke the Print Preview form
            // with the specified look and feel setting.
            printTool.ShowPreviewDialog(UserLookAndFeel.Default);
        }
    }
  

Для печати данных:

         private void FullBtnPrint_Click(object sender, EventArgs e)
    {
        Reports.FullList Rep = new Reports.FullList
        {
            DataSource = GetVisible()
        };
        using (ReportPrintTool printTool = new ReportPrintTool(Rep))
        {
            // Invoke the Print Preview form
            // with the specified look and feel setting.
            printTool.Print();
        }
    }